Java:继承构造函数

2022-09-03 16:48:59

我想要一个带有参数的构造函数,该参数会自动被所有子类继承,但Java不允许我这样做

class A {
    public A(int x) {
     // Shared code here
    }
}

class B extends A {
    // Implicit (int x) constructor from A
}

class C extends A {
    // Implicit (int x) constructor from A
}

我不想为每个子课写,等。有没有更聪明的方法来解决这个问题?B(int x)C(int x)

解决方案#1。创建一个可以在构造函数之后调用的方法。这是可行的,尽管对于我的特定设计,我想要求用户在构造函数中指定在编译时验证的某些参数(例如,不是通过varargs/reflection)。init()


答案 1

你不能。如果要在基类中有一个参数化构造函数(并且没有无参数构造函数),则必须在每个后代类中定义一个构造函数(和调用构造函数)。super()


答案 2

其他回答是正确的,Java不会让你继承构造函数。但是,IDE 可用于帮助减轻为所有类创建这些内容的巨大负担。

在 Eclipse 中,转到“源”菜单,然后选择“从超类生成构造函数...”。在使用对话框创建新类时,也可以选择此选项作为选项。