对象的多态性,内存中实际上是加载了子类特的属性和方法的,但由于变量声明为父类类型,导致编译时,只能调用父类中声明的属性和方法,子类特的属性和方法不能调用。如何才能调用子类特的属性和方法?
一、使用强制类型转换符
Man m1 = (Man) p2;//向下转型,强制转换成man类型,通过m1变量来接收
//向上转型即为:多态
//使用强转时可能出现ClassCastException异常。
二、instanceof关键字的使用
a instanceof A:判断对象a是否是类A的实例,如果是,返回true ,否则返回false。
使用情景:为了避免在向下转型时出现ClassCastException异常,在向下转型之前,先进行instanceof的判断。一旦返回true,就进行向下转型,否则不进行转型。
如果 a instanceof A返回true,则 a instanceof B 也返回true,其中类B和类A是子父类关系。