返回

【学懂Java】(四)面向对象编程-5

发布时间:2023-01-30 12:50:48 141
# 数据

一.Object类

Object类是所有类的父类,一个类如果没有使用extends显性的继承另外一个类,那么这个类就继承自Object类

public class Person{
}
//等同于
public class Person extends Object{
}

Object类的主要方法

  • (1)toString()方法
  • (2)equals()方法

二.多态

1.概念

对应同一个指令(调用同一个名称的方法),不同的对象给予不同的反应(不同的方法实现)

例如:用手机照相,不同手机产生不同结果

【学懂Java】(四)面向对象编程-5_多态

而多态就是用同一个引用类型,使用不同的实例而执行不同操作

2.规范(多态实现的提前):

  1. 必须要有继承关系
  2. 子类方法必须重写父类的方法
  3. 父类引用指向子类对象

例如

public class Dog extends Pet {
@Override
public void feed() {
System.out.println("狗");
}
}
public class Cat extends Pet {
@Override
public void feed() {
System.out.println("猫");
}
}
public abstract class Pet {
public abstract void feed();
}
public class Person{
// public void feed(Cat cat){
// cat.feed();
// }
//
// public void feed(Dog dog){
// dog.feed();
// }
//将上面两个重复的写为:
public void feed(Pet pet){
pet.feed();
}
public static void main(String[] args) {
Person p = new Person();
Pet dog = new Dog();
//父类引用 //子类对象
Pet cat = new Cat();
p.feed(dog);
p.feed(cat);
}

并且使用多态后,需要增加宠物时,只需要添加一个宠物类,再在person类里​​Pet animal = new Animal();​​就可以了。

注意

引用类型的转换跟基本数据类型的转换类似:
  • 当父类需要转成子类的时候,要进行强制转换,但是在强制转换之前一定要先判断父类引用指向的子类对象到底是谁,如果无法确定,在运行过程中可以出错
  • 当子类需要向父类转换的时候,直接自动转换,不需要进行任何的判断

【学懂Java】(四)面向对象编程-5_多态_02

3.实现多态的两种形式

  • 使用父类作为方法形参实现多态
  • 使用父类作为方法返回值实现多态

以上代码已经实现了用父类作为方法形参实现多态,接下来我们看看使用父类作为方法返回值实现多态

public class Person{
public Pet buyPet(int type){
if(type==1){
return new Dog();
}else if(type == 2){
return new Cat();
}else{
return new Penguin();
}
}

public static void main(String[] args) {
Person p = new Person();
Pet pet = p.buyPet(2);
if(pet instanceof Dog){
System.out.println("买的是一只狗");
}else if(pet instanceof Cat){
System.out.println("买的是一只猫");
}else{
System.out.println("买的是一只企鹅");
}
}
}
public class Dog extends Pet {
@Override
public void feed() {
System.out.println("狗");
}
}
public class Cat extends Pet {
@Override
public void feed() {
System.out.println("猫");
}
}
public abstract class Pet {
public abstract void feed();
}

4.多态的目的

  • 为了提高代码的扩展性和维护性
  • 方便代码逻辑的编写
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
Nginx与LUA(6) 2023-01-30 12:12:55