为什么Cat类型不能转换成Animal类型?为什么说animal不含cat类型的元素?可是cat不是animal的子类,继承了animal的所有属性和方法吗?
为什么Cat类型不能转换成Animal类型?为什么说animal不含cat类型的元素?可是cat不是animal的子类,继承了animal的所有属性和方法吗?
为什么Cat类型不能转换成Animal类型?为什么说animal不含cat类型的元素?可是cat不是animal的子类,继承了animal的所有属性和方法吗?
2016-04-16
我也是新手,不保证对,我是这样理解的:
Dog dog=new Dog();创建对象引用Dog()这个子类;把这个类赋给dog,类型还是Dog类;但这个类新开辟了地址,而Animal animal=dog把Dog()这个类赋给了animal,animal的类型是Animal(因为Dog()是Animal()的子类,就像一条河的支流,本质上还是Animal()的一部分,所以可以转换),而Dog dog2=(Dog)animal;
把animal赋给dog2,类型是Dog,也就是说这里实质上就是dog2=dog,dog是Dog类,所以可以转换。而Cat cat=(Cat)animal;上面说了Dog()类被引用过来命名为dog,而dog又命名为animal,只是类型变了,也就是说,animal=Dog();也就是说这里我们把Dog()赋给cat,类型转变为Cat类型,那么问题来了,Cat类型是Cat()的类型,Cat()和和Dog是没有关联的,所以不能转换
举报