[英]Subclassing a class with a private default constructor in Java
假设我有带有私有构造函数的 class A
和扩展它的 class B
:
public class A {
private A() {}
}
public class B extends A {
public B(){
// error - there is no default constructor available in 'A'
}
}
我知道可以通过 Java 反射调用私有构造函数,但是我该如何在B
构造函数中做到这一点? 谢谢。
如果 class B
扩展A
并且A
的构造函数是私有的,则子类化是不可能的,除非两个类都在同一个文件中定义为内部类(请参阅防止 Class 的实例化)。 这是因为子类的构造函数进行了(显式或隐式) super()
调用。 super()
调用基本上只是对匹配构造函数的调用,如果该构造函数被声明为private
,则无法从某些外部 class(例如,在不同文件中定义的一个)调用此调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.