java - 为什么不能从构造函数为私有的类继承?

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();

}

}

印刷

Subclassed A in Main$B

它阻止的是无法访问其超类的任何构造函数的子类。这意味着私有构造函数不能在另一个类文件中使用,并且包本地构造函数不能在另一个包中使用。

在这种情况下,您唯一的选择是委派。您需要调用工厂方法来创建“超级”类的实例并包装它。