多态
使用多态的好处:
- 减少类中的代码量
- 提高代码的可扩展性
- 提高代码的可维护性
实现多态的三个要素:
-
编写具有继承关系的父类和子类
-
子类重写父类方法
-
使用父类的引用指向子类对象
父类到子类的转换: 例:Pet pet=new Dog();// 向上转型 又称自动类型转换 父类到子类的转换: 例:Dog dog=(Dog)pet;//正确 Penguin pen=(Penguin)pet://报错,必须转换为父类指向的真实子类类型
实现多态的两种形式:
- 使用父类作为方法形参实现多态
- 使用父类作为方法返回值实现多态
instanceof运算符
语法:
对象 instanceof 类或接口
提示:instanceof通常和强制类型转换结合使用
例:
public class Master {
public void play(Pet pet){
if (pet instanceof Dog) { //如果传入的是狗狗
Dog dog = (Dog) pet;
dog.catchingFlyDisc();
}else if (pet instanceof Penguin) { //如果传入的是企鹅
Penguin pgn = (Penguin) pet;
pgn.swimming();
}
}
}