我有代码:
class Oak extends Tree {
public Oak() {
System.out.println("Oak()");
}
}
class Tree {
public Tree() {
System.out.println("Tree()");
}
}
class mainClass {
public static void main(String[] args) {
Oak a = new Oak();
}
}
Run Code Online (Sandbox Code Playgroud)
为什么要打印
Tree()
Oak()
Run Code Online (Sandbox Code Playgroud)
而不仅仅是
Oak()
Run Code Online (Sandbox Code Playgroud)
?
An Oak是一种Tree,因此Tree必须首先构造对象的一部分.因此,将Tree调用默认构造函数.随后,Oak构造函数可以运行.
这完全等同于在Tree构造函数中显式调用构造Oak函数作为第一个语句:
public Oak() {
super();
...
}
Run Code Online (Sandbox Code Playgroud)
[请注意,构造函数不会"覆盖".]
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |