多态性之:向下转型及instanceof的使用

对象的多态性,内存中实际上是加载了子类特的属性和方法的,但由于变量声明为父类类型,导致编译时,只能调用父类中声明的属性和方法,子类特的属性和方法不能调用。如何才能调用子类特的属性和方法?

一、使用强制类型转换符
        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是子父类关系。

 

上一篇:ES6-11学习笔记--数组的扩展


下一篇:js组成、js中数据类型、typeof、instanceof、判断对象相等、函数及调用形式