【发布时间】:2015-07-05 23:57:21
【问题描述】:
这个问题主要是参考 Luiggi 对这个 SO question 的回答: Why can you not inherit from a class whose constructor is private?
我了解 Java 强制每个子类构造函数都必须调用其超类的构造函数之一。如果所有超类的构造函数都是私有的,这显然是不可能的。因此,如果理论上子类可以从具有私有构造函数的超类继承,结果将是您无法在子类上调用构造函数。
但是如果我从不打算创建子类的实例呢?例如,如果我的子类只添加静态字段和方法,而我只对使用超类的静态字段和方法感兴趣怎么办?那我就不需要子类的构造函数了。
【问题讨论】:
-
那么您是在问为什么 Java 设计者决定禁止这种子类?或者您是否要求我们向您展示 JLS 中编译器需要这种行为的位置?还是???
-
我问的是第一个。
-
那么在 OOP 术语中它并不是真正的“类”。它应该是“命名空间”之类的。不幸的是,在 Java 中我们必须使用类来完成它(或者在 java8 中也使用接口);这是一个黑客。
标签: java inheritance constructor