欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

理解Java面向对象编程:多态的限制与局限性探讨

最编程 2024-08-02 22:09:25
...

1.当父类引用指向子类对象时,父类引用是不能直接调用子类特有的方法的。需要向下转型(强制类型转换)。

向下转型(强制类型转换)格式:

父类类型 父类对象引用=new 子类类型();//向上转型(自动类型转换):父类的引用指向子类的实例(对象

子类类型  子类对象引用=(子类类型)父类对象引用;//向下转型(强制类型转换):子类的引用指向父类的引用

向下转换后才能调用子类特有的方法。

2.同时,在向下转型的过程中,容易出现类型转换异常ClassCastException,将父类引用转换成了其它的子类对象,所以在转换之前需要对父类引用类型进行判断

这时就需要用到instanceof关键字进行判断

 if(animal instanceof Dog){
            Dog dog =(Dog)animal;
            dog.eat();//Dog类中独有方法
        }else if(animal instanceof Cat){
            Cat cat =(Cat)animal;
            cat.play();//Cat类中独有方法
        }

注意:使用instanceof时,对象的类型必须和instanceof后面的参数所指定的类在继承上有上下级关系。

推荐阅读