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

有点不明白

Dog dog=new Dog();

Animal animal=dog;

Dog dog2=(Dog)animal;

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

提问者:慕粉2218014479 2016-11-26 00:28

个回答

  • 慕粉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,强制转换只针对变量


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

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

    腻害,幕友

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

    如梦初醒!

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