多态(对象的多种形态)
1. 引用多态
父类引用可以指向本类的对象
父类引用可以指向子类的对象
public class Initial {
public static void main(String[] args) {
Animal obj1=new Animal();
Animal obj2=new Dog();
}
}
2. 方法多态
创建本类对象时,调用的方法为本类方法
创建子类对象时,调用的方法为子类重写的方法或者继承的方法
obj1.eat(); //调用父类的方法
obj2.eat(); //调用子类的方法
3. 引用类型转换
1. 向上类型转换(隐式/自动类型转换),是小类型到大类型的转换
2. 向下类型转换(强制类型转换),是大类型到小类型
3. instance of 运算符,来解决引用对象的类型,避免类型转换的安全性问题
Dog dog2=(Dog) animal; //强制类型转换
if(animal instanceof Cat){
Cat cat = (Cat) animal; //1. 编译时 cat类型 2. 运行时 Dog类型
}else{
System.out.println("无法进行类型转换")
}
无法进行类型转换
注意:
多态存在的三个必要条件:要有继承、要有重写、父类变量引用子类对象。