【发布时间】:2013-05-02 03:41:22
【问题描述】:
我不确定我的问题措辞是否正确,但我对这些代码行感到困惑。
public class First {
public String name() {
return "First";
}
}
public class Second extends First {
public void whoRules() {
System.out.print(super.name() + " rules");
System.out.println(" but " + name() + " is even better");
}
public String name() {
return "Second";
}
}
public class Third extends Second {
public String name() {
return "Third";
}
}
Second varSecond = new Second();
Third varThird = new Third();
varSecond.whoRules();
varThird.whoRules();
当上面执行时,它会打印出来
First rules but second is even better
First rules but third is even better
为什么不呢:
First rules but second is even better
Second rules but third is even better
一个子类可以成为另一个类的超类吗?还是只能有一个(超类)?
(使用上面的示例代码)
我知道First 是Second 的超类,但Second 是Third 的超类吗?
还是First 是Third 的超类?
如果有 10 个类相互扩展(第二个扩展第一个,第三个扩展第二个,等等)所有这些类的超类是否都是 First?)
【问题讨论】:
-
super.name()存在于第二个类中,尽管方法whoRules()被继承,但其中的super.name()仍然指向Second的超类的名称,在您的情况下是 @ 987654335@
标签: java inheritance constructor overriding