什么是多态
什么是多态
多态是具有表现多种形态的能力的特征(专业说法:同一个接口实现不同的实例而执行不同的操作)。
使用多态有什么优点
减少代码量
实现多态有哪几种方式
实现多态的条件
- 必须存在继承
- 子类重写父类
- 父类引用变量指向子类
1.子类到父类的转换(向上转型)
例:Pet pet=new Dog();
规则
- 将一个父类的引用指向一个子类对象
- 通过父类引用变量调用方法时 ,调用的是子类重写之后的方法
- 无法通过父类引用变量调取子类的特有方法
两种实现方式
-
将父类作为方法形参
-
/** * 喂养宠物 */ public void feed(Pet pet) { pet.eat(); }
3.将父类作为方法返回值
/**
领养宠物
*/
public Pet getPet(int typeId) {
Pet pet=null;
if(typeId1) {
pet=new Dog(“欧欧”, “雪纳瑞”);
}else if(typeId2){
pet=new Penguin(“楠楠”, “Q妹”);
}
return pet;
}
```
2.向下转型(父转子)
例:Pet pet=new Dog();
Dog dog=(Dog)pet;(强制类型转换)
instanceof 运算符
含义:用于判断类型,检测对象的真是类型,返回true/false
作用:避免类型转换异常
声明: 对象 instanceof 类/接口
例:pet instanceof Dog(判断宠物对象是否为Dog类型)
条件:对象的类型和类必须具有上下级关系(继承),一般与强制类型结合使用