Java:继承构造函数

Mik*_*ike 14 java oop inheritance

我希望有一个构造函数,其参数可以自动地由所有子类继承,但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
}
Run Code Online (Sandbox Code Playgroud)

我不希望有写B(int x),C(int x)等等.每个子类.是否有更聪明的方法来解决这个问题?

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

Chs*_*y76 26

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


Mat*_*att 12

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

在Eclipse中,转到"Source"菜单并选择"Generate Constructors from Superclass ...".使用对话框创建新类时,也可以选择此选项.

  • 嗯......一个人的"巨大负担"是另一个人的琐碎任务. (5认同)