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

有点不明白

Dog dog=new Dog();

Animal animal=dog;

Dog dog2=(Dog)animal;

请问第二行每一个代表什么?怎么理解?为什么第二行不是Animal animal=Dog;第三行为什么不是Dog dog2=(Dog)Animal?第三行的animal是哪里来的??

正在回答

3 回答

这三行代码可以类比c语言:

float dog = 0;
double animal = dog;
float dog2 = (float)animal;

第二行:

    Animal 表示类;animal 表示对象;dog 就是第一行生成的对象

    Animal animal = Dog 类比c语言就成了 double animal=float,变量赋值只能是值,不能赋值成变量类型吧

第三行:

    (Dog)animal 表示强制转换,转换肯定是针对对象的,而不是类;animal就是第二行生成的对象

    Dog dog2=(Dog)Animal 类比c语言就成了 float dog2=(float) double,强制转换只针对变量


以上解答为自一个非计算机专业新人的粗浅理解,如有错误,请大神轻拍

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

慕粉2218014479 提问者

非常感谢!
2016-11-28 回复 有任何疑惑可以回复我~

腻害,幕友

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

如梦初醒!

兵教兵也这么厉害,都快赶上老师了!

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

举报

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

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

进入课程

有点不明白

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