美文网首页
向下转型的使用和instanceof关键字

向下转型的使用和instanceof关键字

作者: 冯宏志 | 来源:发表于2020-11-30 22:53 被阅读0次
  • 有了对象的多态性之以后,内存中实际上是加载了子类特有的属性和方法的,但是由于变量声明为父类类型,导致编译时,只能调用父类中声明的属性和方法,子类特有的属性和方法不能调用
  • 如何调用子类特有的属性和方法?(见以下代码)
    向下转型,使用强制转换符。(类比于自动类型提升和强制类型转换)
Person p1 = new Man();
Man m1 = (Man)p1;
instanceof关键字的使用

使用强转时,可能出现ClassCastException的异常,此时使用如下关键字
a instanceof A:判断对象a是否是类型A的实例。如果是,返回true,如果不是,返回false

    if(p2 instanceof Woman) {//如果p2是Woman类型,则进行强制类型转换,则调用Woman类的方法
            Woman w1 = (Woman)p2;
            w1.goShopping();
        }

使用情境:为了避免ClassCastException的异常,在向下转型之前, 先进行instanceof的判断,一旦返回true,就进行向下转型,如果返回false,不进行向下转型

  • 如果a instanceof A返回true,则a instanceof B也返回true
    其中,B是A的父类

相关文章

网友评论

      本文标题:向下转型的使用和instanceof关键字

      本文链接:https://www.haomeiwen.com/subject/bakkyktx.html