向下转型的问题?非常之不理解?
向下转型的意思是 子类的引用指向父类的实例
那么代码是不是应该这样写 Cat temp=(Cat) new Animal();
可是老师的教程中并不是这样的 而是写成
Animal two=new Cat();
Cat temp=(Cat) two;
那么问题又来了 如果像老师说讲的Cat temp=(Cat) two;
那么我是不是也可以这样理解把代码写成 Cat temp=(Cat) new Cat();
那么问题又来了 如果我上面写的代码成立 那么我是不是可以理解这个就是创建一个Cat对象而已
Cat temp= new Cat();
既然是创建一个Cat对象,那么又何必把代码写成强转的呢Cat temp=(Cat) new Cat();
真的理解不了,我觉得这个地方还是没有讲透彻
正在回答 回答被采纳积分+1
哎?回复怎么不能按我的格式来,都乱了。我用这个留言。请老师帮忙看下
@幸运的小叶子 老师
按我的理解:
设:父类为A,内容为:name和eat()
子类为:
B,内容为 name和age和eat()新1
C,内容为 name和weight和eat()新2
其实向下转型就是将B先向上转型为A然后再转型回B,就还是B没变。(这个理解对吗,子类转一圈就还是它自己)
然后
当我们想知道B和C分别叫什么名字(name),以及怎么吃东西(eat())的时候,而没必要知道他们的年龄(age)和体重(weight)的时候就:
A a1 = new B( );
A a2 = new C( );
a1.name; a1.eat( )
a2.name; a2.eat( )
这样我觉得空间占用会很小多。
当我们需要知道他们特有的年龄(age)和体重(weight)时候,再向下转型,
B b = (B)a1;
C c = (C)a2;
b.age;
c.weight;
这样更节省空间?
我理解的对吗?
是没有讲透彻
首先 new Cat() 和 new Animal() 是两个完全不同的概念 一个是 Cat类的实例 一个是 Animal类的实例
然后 Animal two=new Cat(); 的前提是 Cat 类必须继承自 Animal 类 也就是说一个是子类 一个是父类 两者必须有继承关系
最后 转型的目的是或者说继承的目的是为了多态 , 前面的转来转去只是为了演示这个转化的过程而已,所以没有实际的意义
然而 向上转型用的是最多的,
Animal cat = new Cat() Animal person = new Person() , 在调用 cat.eat() 和 person.eat() 虽然两者都是Animal 但是却能得到子类里面不同的实现方法
"俗称:编译看左边,运行看右边" 也就是编译的时候都是动物 ,运行的时候,人吃饭 狗吃的是屎
- 参与学习 人
- 提交作业 5461 份
- 解答问题 7238 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星