实现多态的三个要素
①编写具有继承关系的父类和子类
②子类重写父类方法
③使用父类的引用指向子类的对象(实例)----向上转型
Pet pet = new Dog(); //Pet 父类 Dog 子类
// 自动类型转换
实现多态的两种形式
①使用父类作为方法形参实现多态
②使用父类作为方法返回值实现多态
public class Master {//主人类
public void feed( Pet pet ) {//使用父类作为方法形参
pet.eat();
}
}
Pet pet = new Dog(); //测试方法
Master master = new Master();
master.feed( pet );
//同一种操作方式,不同的操作对象
父类到子类的转换
父类想使用子类特有的方法怎么办?
需要先判断是否为同一种类型 向下转型(强制类型转换)
Pet pet = new Dog(“欧欧”, “雪纳瑞");
Dog dog = (Dog) pet;
使用多态的好处
可以提高代码的复用性,解耦合
使用:
编译看左边,运行看右边
instanceof运算符
对象 instanceof 类或接口
instanceof是Java中的二元运算符,左边是对象,右边是类;当对象是右边类或子类所创建对象时,返回true;否则,返回false。
private void print(Object a) {
System.out.println(a+" instanceof");
}
public void convert(String b) {
if (b instanceof Object) {
this.print(b);
}
}
instanceof通常和强制类型转换结合使用