问答详情
源自:10-2 多态中的引用类型转换

请问这哪里出问题了

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;

}


}


提问者:PG_one 2017-09-30 00:03

个回答

  • 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类型不同型,无法强制转换。