为什么我们不能在java中有抽象构造函数?

arm*_*min 5 java

我想知道 java 中阻止这样的类的设计考虑是什么?

public abstract class A{
    public abstract A();
}
Run Code Online (Sandbox Code Playgroud)

如果我们可以强制实现构造函数,那么我们就可以实例化抽象类。但他们为什么不呢?这是否违反了 OOP 设计,还是根本不可能?

Era*_*ran 5

抽象构造函数没有意义。

抽象方法强制所有具体的子类实现具有相同签名(包括相同名称)的方法。

但是,具体子类不能实现与抽象类的“抽象构造函数”同名的构造函数,因为构造函数必须具有它出现的类的名称。

  • 这只是一个设计选择。java 开发人员可以轻松地想出一种语法来允许这样做。但是为什么他们不允许这样做则是另一个问题。完成此操作的示例语法是 public abstract this(); 对于构造函数。 (2认同)