【发布时间】:2020-01-23 16:26:42
【问题描述】:
我是 Java 新手,我发现我们不能子类化一个构造函数为 private 的类。但是,我遇到了这个code,它创建了一个子类,其超类的构造函数是私有的。
简而言之:
这行得通:
class A {
static class B {
private B() {
out.println("Constructor of B");
}
}
static class C extends B {
C() {
out.println("Constructor of C");
}
}
}
虽然不是这样:
class B {
private B() {
out.println("Constructor of B");
}
}
class C extends B {
C() {
out.println("Constructor of C"); // No default constructor available for super class
}
}
谁能帮我理解这里发生了什么?
【问题讨论】:
-
我们不能子类化一个构造函数为
private的类:我认为这不太准确。它应该是...没有子类可以访问的构造函数。在这种情况下(工作代码),C可以访问private的成员B
标签: java inheritance constructor static