动态绑定 Java。对象是否具有其声明类型或实际类型的方法?
Dynamic Binding Java. Does an object have the methods of its declared type, or its actual type?
假设我声明如下:
Cat elsa = new Lion();
Lion 扩展了 Cat。如果我这样声明,elsa 是一只猫拥有一只猫的所有方法还是一只狮子,拥有这两种狮子的所有方法猫
这个问题在我能找到的其他问题中没有得到解决。
您创建的 对象 是 Lion
类型并且具有 [=11] 的所有属性和方法=] 对象。 变量 elsa
是 Cat
类型,因此它只能用于访问 Cat
对象。
所以你的问题的答案是 elsa
将是一个 Lion
,你只能将其视为 Cat
,除非你将其转换回 Lion
.例如:
elsa.roar(); // compile error if the roar() method is only for Lion
((Lion)elsa).roar(); // will work
假设我声明如下:
Cat elsa = new Lion();
Lion 扩展了 Cat。如果我这样声明,elsa 是一只猫拥有一只猫的所有方法还是一只狮子,拥有这两种狮子的所有方法猫
这个问题在我能找到的其他问题中没有得到解决。
您创建的 对象 是 Lion
类型并且具有 [=11] 的所有属性和方法=] 对象。 变量 elsa
是 Cat
类型,因此它只能用于访问 Cat
对象。
所以你的问题的答案是 elsa
将是一个 Lion
,你只能将其视为 Cat
,除非你将其转换回 Lion
.例如:
elsa.roar(); // compile error if the roar() method is only for Lion
((Lion)elsa).roar(); // will work