为了账号安全,请及时绑定邮箱和手机立即绑定

请问这哪里出问题了

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 回答

最好这么写:

if(animal instanceof Cat){

   Cat cat=(Cat)animal;

}else{

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

}

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

Cat cat=animal,两个错误:

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

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


0 回复 有任何疑惑可以回复我~
#1

慕移动3490989

笔误,应该是Cat cat=(Cat)animal,而且上面的强制类型转化也有错误,应该是Dog02 dog=(Dog02)animal
2017-09-30 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530553    人
  • 解答问题       6091    个

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

进入课程

请问这哪里出问题了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信