我运行了以下代码:
class Feline {
public String type = "f ";
public Feline() {
System.out.print("feline ");
}
}
public class Cougar extends Feline {
public Cougar() {
System.out.print("cougar ");
}
public static void main(String[] args) {
new Cougar().go();
}
void go() {
type = "c ";
System.out.print(this.type + super.type);
}
}
并以为输出为
feline cougar c f
,但令我惊讶的是输出为feline cougar c c
。有人可以解释一下。
最佳答案
超类不是子类实例所具有的,而是子类实例所具有的。您的Cougar
“是” Feline
。 Feline
的所有成员都是Cougar
的成员-相同,而不是副本。在超类中没有单独的type
-它与子类中的type
成员相同。您可以将其称为Cougar
的成员或Feline
的成员,它们都是一样的。