小编rga*_*959的帖子

为什么总是调用超类构造函数

我有以下2个班级

public class classA {
    classA() {
        System.out.println("A");
    }
}

class classB extends classA {
    classB() {
        System.out.println("B");
    }
}
Run Code Online (Sandbox Code Playgroud)

然后跑

1

classA c = new classB();
Run Code Online (Sandbox Code Playgroud)

要么

2

classB c = new classB(); 
Run Code Online (Sandbox Code Playgroud)

总是给

A
B
Run Code Online (Sandbox Code Playgroud)

为什么会这样?乍一看,在任何一种情况下,我都会假设只classB调用构造函数,因此唯一的输出就是

B
Run Code Online (Sandbox Code Playgroud)

但这显然是错误的.

java inheritance default-constructor superclass

22
推荐指数
2
解决办法
1万
查看次数