我不太确定我的问题措辞是否正确,但我对这些代码行感到困惑。
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
一个子类可以是另一个类的父类(super class)吗?或者只能有一个(父类(super class))?
(使用上面的示例代码)
我知道 First
是 Second
的父类(super class),但是 Second
是 Third
的父类(super class)吗?
或者 First
是 Third
的父类(super class)?
如果有 10 个类相互扩展(第二个首先扩展,第三个第二个扩展,等等)所有这些类的父类(super class)是否都是 First
?)
最佳答案
Why wouldn't it be: ... "Second rules but third is even better"
因为类Second中的super.name()
引用的是Second的父类(super class),而不是实例的父类(super class)。
来自Java Language Specification : super.Identifier 的形式引用当前对象的标识符字段,但当前对象被视为当前类的父类(super class)的实例。
Can a subclass be a superclass for another class?
是的。
Or can there only be one(superclass)?
每个类最多可以有一个直接父类(super class),而父类(super class)又可以有它的父类(super class),等等。
(Using example code above) I understand that First is a superclass for Second, but is Second a superclass for Third? Or is First the superclass for Third?
First 和 Second 都是 Third 的父类(super class)。
Second 是 Third 的直接父类(super class)。
关于java - 子类中扩展子类的 super() 构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16329973/