FlyingObject是一个父类; 有两类继承了它其中一个就是Airplane;flying[index]代表其中一个类的对象
Enemy是一个接口;Airplane是一个类,实现了接口;
一个是强转为实际类型我可以理解;可是转为接口;用接口去.方法;就不是很理解;
难道是因为接口的引用是对象强转过来的;所以.方法可以准确调用到对象类的方法;
接口的引用.方法;不该是接口里的吗?是怎么准确判断是哪个类里的方法的?
你能给我讲解下吗?
这实际设计的是内存管理知识。
都知道Class是堆管理,那么名称实际就是我们说的“引用”了,实际引用就是代表了他在堆里面的起始地址,实际上你在new的时候不仅开辟并返回了地址,尤其作为虚拟机一代(有很多安全检测)它还保存了其他信息,比如类型。那么实际上这么一个地址是可以任意转换的,只是编辑时为了自动弹出等方便编辑,且不易出错,大家约定一个叫做接口或者父类的东西...这就是契约了。
针对你贴图的问题,应该getSocre方法是在FlyingObject中定义的,如果是这样根本就不需要强转为接口类型。
你后面说的我没办法理解,简单点说接口只是大家沟通的一种桥梁,如果对象实现了接口,那么在实际调用的时候是可以通过接口上的方法(契约)找到实际实现(实现接口对象的方法)。
哦,能说下具体的那契约是怎么回事 可以吗?