我说声明如下:
Cat elsa = new Lion();
狮子扩展了猫。如果我以这种方式宣布,elsa将是一只拥有所有猫的方法的猫或者它是狮子,拥有狮子和猫的所有方法
我可以找到的其他问题没有解决这个问题。
答案 0 :(得分:2)
您创建的 对象 属于Lion
类型,并具有Lion
对象的所有属性和方法。 变量 elsa
但是类型为Cat
,因此它只能用于访问Cat
对象的方法和属性。
因此,您的问题的答案是elsa
将是Lion
,您只能将其视为Cat
,除非您将其转回Lion
。例如:
elsa.roar(); // compile error if the roar() method is only for Lion
((Lion)elsa).roar(); // will work