abstract class A {
abstract void method();
}
class B extends A {
B() {
}
void method() {
}
}
class C extends B {
C() {
}
}
Run Code Online (Sandbox Code Playgroud)
当我在 main 中实例化类 C 时,它会自动调用 B(父类)的构造函数。这是正常现象还是我做错了什么?
没有什么问题,有对super构造函数的隐式调用。
您还没有为类编写任何构造函数C,因此编译器将提供默认构造函数。
C(){
super();
}
Run Code Online (Sandbox Code Playgroud)
如果提供了默认构造函数,则会调用super(). 在你的情况下,C extends B所以构造函数B被调用。
如果您没有将一个类与任何其他类一起使用,那么默认情况下它也会扩展Object类。所以Object类构造函数将被调用。
| 归档时间: |
|
| 查看次数: |
13085 次 |
| 最近记录: |