首页 新闻 会员 周边

父类引用指向子类对象;那么强转为实际对象类型;为什么可以用借口代替对象啊

0
悬赏园豆:10 [已解决问题] 解决于 2017-04-24 23:46

FlyingObject是一个父类; 有两类继承了它其中一个就是Airplane;flying[index]代表其中一个类的对象

Enemy是一个接口;Airplane是一个类,实现了接口;

一个是强转为实际类型我可以理解;可是转为接口;用接口去.方法;就不是很理解;

难道是因为接口的引用是对象强转过来的;所以.方法可以准确调用到对象类的方法;

接口的引用.方法;不该是接口里的吗?是怎么准确判断是哪个类里的方法的?

你能给我讲解下吗?

小梁丶的主页 小梁丶 | 初学一级 | 园豆:172
提问于:2017-04-22 16:17
< >
分享
最佳答案
0

这实际设计的是内存管理知识。

都知道Class是堆管理,那么名称实际就是我们说的“引用”了,实际引用就是代表了他在堆里面的起始地址,实际上你在new的时候不仅开辟并返回了地址,尤其作为虚拟机一代(有很多安全检测)它还保存了其他信息,比如类型。那么实际上这么一个地址是可以任意转换的,只是编辑时为了自动弹出等方便编辑,且不易出错,大家约定一个叫做接口或者父类的东西...这就是契约了。

收获园豆:10
花飘水流兮 | 专家六级 |园豆:13560 | 2017-04-24 08:36
其他回答(1)
0

针对你贴图的问题,应该getSocre方法是在FlyingObject中定义的,如果是这样根本就不需要强转为接口类型。

你后面说的我没办法理解,简单点说接口只是大家沟通的一种桥梁,如果对象实现了接口,那么在实际调用的时候是可以通过接口上的方法(契约)找到实际实现(实现接口对象的方法)。

Daniel Cai | 园豆:10424 (专家六级) | 2017-04-23 11:23

哦,能说下具体的那契约是怎么回事 可以吗?

支持(0) 反对(0) 小梁丶 | 园豆:172 (初学一级) | 2017-04-23 22:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册