有点不明白

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

慕粉2218014479

2016-11-26 00:28

Dog dog=new Dog();

Animal animal=dog;

Dog dog2=(Dog)animal;

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

写回答 关注

3回答

  • 慕粉1819574364
    2016-11-26 02:38:15
    已采纳

    这三行代码可以类比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,强制转换只针对变量


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

    慕粉2218...

    非常感谢!

    2016-11-28 12:51:14

    共 1 条回复 >

  • qq_梦盈华尔兹_0
    2017-06-12 22:37:36

    腻害,幕友

  • 0821
    2017-01-01 22:13:24

    如梦初醒!

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

Java入门第二季 升级版

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

530562 学习 · 6091 问题

查看课程

相似问题