Java 不阻止使用私有构造函数对类进行子类化。
public class Main {
static class A {
private A() {
System.out.println("Subclassed A in "+getClass().getName());
}
}
static class B extends A {
public B() {
}
}
public static void main(String... ignored) {
new B();
}
}
prints
Subclassed A in Main$B
它防止的是子类无法访问其超类的任何构造函数。这意味着私有构造函数不能在另一个类文件中使用,并且包本地构造函数不能在另一个包中使用。
在这种情况下,您唯一的选择就是授权。您需要调用工厂方法来创建“超级”类的实例并包装它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)