【发布时间】:2015-09-21 06:09:18
【问题描述】:
如果构造函数在 Java 中不继承,为什么会出现编译错误(隐式超级构造函数 A() 对于默认构造函数不可见。必须定义显式构造函数)?
class A {
private A() {
}
}
public class B extends A {
}
UPD。我知道 super() 在隐式 B 构造函数中被调用。但我不明白为什么它不能使用super() 访问私有构造函数。所以,如果我们只有私有构造函数,那么类事实上是final?
【问题讨论】:
-
(最后一个问题的答案是“是”,前提是“最终”的意思是“它不能被子类化”。应该(可能,我认为)不应该假设但是编译器也会发现这一点,并将 A 类视为已明确声明为“final”。)
标签: java inheritance constructor private