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

难道只有我发现了一个小问题吗

5805eb0700017dcb05000305.jpg

5805eb0800017db305000278.jpg

红色圈出的注释部分视频前后写的不一样,都把我搞糊涂了。但是Animal animal = dog;这个肯定是向上转换没问题吧?

正在回答

5 回答

 我打错字了,double有8个字节,而int是4个字节,大到小为向下类型转化


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

向上类型转化,例如:double avg1=78.9;

                                 int avg2=(int)avg1;

                                  System.out.println(""+avg1);

                                    System.out.println(""+avg2);

jieguowei:avg1=78.9;

avg2=78;


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

其实你不用纠结于这文字的游戏;

Dog dog = new Dog();给狗这个概念实例化,让狗这个名词变成实实在在的一只生龙活虎的狗

Animal animal = dog;给动物这个概念实例化,让动物这个名词变成一个实实在在的动物---一条狗;这个没问题

反过来你想,Dog dog2=animal,让狗这个概念实例化,让狗这个名词变成一个实实在在的一个动物,这个动物是什么动物呢?并一定这个动物就是一条狗。所以要把这个动物筛选一下,向下缩小一下范围,让它从一只动物变成一只狗,(Dog)animal就是执行了向下转换。理解了这里再回头理解上面。Animal animal = dog;就相当于Animal animal=dog(=>new Animal);是向上转换;

这里是可以抬杠的,不过自己理解了就可以了,不用非要辩论出上下,


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

http://img1.sycdn.imooc.com//5806d7d3000141e604010165.jpg

Dog dog = new Dog();

Animal animal = dog;

这个是向下类型转换?那你的意思Java面向对象课程里的4-2课程完全错了吗...

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

taylorfeng 提问者

我的理解是赋值=号后面的是被转换的,前面的是转换后的类型,那dog作为animal的子类应该是向上转换了才对啊
2016-10-19 回复 有任何疑惑可以回复我~
#2

qq_YAO_4

dog赋值给了animal,这是向上类型转换,小类型转换成大类型
2016-10-19 回复 有任何疑惑可以回复我~
#3

taylorfeng 提问者 回复 qq_YAO_4

嗯应该就是这样的。
2016-10-19 回复 有任何疑惑可以回复我~

向下类型转换

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

taylorfeng 提问者

看我楼下的截图,是截自Java面向对象课程的4-2视频里的
2016-10-19 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

难道只有我发现了一个小问题吗

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