请问这哪里出问题了

来源:10-2 多态中的引用类型转换

PG_one

2017-09-30 00:03

package chapter4;


public class Initail02 {


public static void main(String[] args) { 

  Dog02 dog=new Dog02();

  Animal02 animal=dog; //自动类型提升 向上类型转换

  Dog02 dog2=(Dog)animal;//向下类型转换 强制类型转换

  Cat cat=animal;

}


}


写回答 关注

3回答

  • weibo_阿雷demos_0
    2018-03-13 17:39:54

    最好这么写:

    if(animal instanceof Cat){

       Cat cat=(Cat)animal;

    }else{

        System.out.println("Cat类未继承Animal父类或者未重写Animal父类属性");

    }

  • weibo_阿雷demos_0
    2018-03-13 17:38:00

    Dog02 dog2=(Dog02)animal;Cat cat=(Cat)animal;两处错误

  • 慕移动3490989
    2017-09-30 15:58:40

    Cat cat=animal,两个错误:

    首先是语法错误,向下类型转换用强制类型转换应该是Cat cat=(cat)animal;

    二是向下类型转换有风险,Animal02 animal=dog;对象animal已经和dog同型,是Dog02类型,即使再强制转换,语法没有错误,编译的时候不会报错,但运行的时候会报错,因为Cat类型和Dog02类型不同型,无法强制转换。


    慕移动349...

    笔误,应该是Cat cat=(Cat)animal,而且上面的强制类型转化也有错误,应该是Dog02 dog=(Dog02)animal

    2017-09-30 16:07:43

    共 1 条回复 >

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530653 学习 · 6091 问题

查看课程

相似问题