Java重温之多态
概念:父类的引用指向子类的实例,此语法现象即为"多态".
语法:父类类型 对象 = new 子类实例.
如:Pet pet = new PetDog();
特点:
- 多态,直白而已,就是“多种状态”,对象有两种或者两以上的状态,既属于父类类型,也属于具体的子类型。
- 父类的引用只能调用父类中声名过的方法;不能调用子类中特有的方法。
- 自动类型转换:父类的引用指向子类的实例,会自动将子类实例提升成父类类型,然后赋值给左侧的父类的引用变量
- 语法:父类类型 对象 = new 子类实例
- 强制类型转换:父类的引用赋值给子类类型时,需要手动将父类类型的实例强制转换为子类类型
- 语法:子类类型 对象= (子类类型)父类类型的实例
- 如 PetDog petDog = (PetDog)pet;
注意点:不能将没有继承关系的两个类,强制进行类型转换,否则,会抛出:ClassCastException
如何屏蔽ClassCastExceoption,措施:进行强制类型转换之前,要使用instanceof关键字判断一下
语法: 对象 instanceof 类型
if(pet instanceof PetDog){
}
表达式的结果是一个boolean含义;询问前面的实例是否是后续类型的实例,若是就返回true,否则就返回false.