假设我有一个带有私有构造函数的类A
,以及扩展它的类B
:
public class A {
private A() {}
}
public class B extends A {
public B(){
// error - there is no default constructor available in 'A'
}
}
我知道可以通过Java反射调用私有构造函数,但如何在B
构造函数中实现呢?谢谢
如果类B
扩展了A
,而A
的构造函数是私有的,则除非两个类都作为内部类定义在同一文件中,否则子类化是不可能的(请参阅防止类实例化(。这是因为子类的构造函数执行(显式或隐式(super()
调用。super()
调用基本上只是对匹配构造函数的调用,如果该构造函数被声明为private
,则该调用不可能来自某个外部类(例如,在不同文件中定义的类(。