Java的:继承构造(Java: Inherit constructor)

2019-07-05 01:25发布

我想有与被所有子类自动继承的参数的构造方法,但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。 做一个init()可以构造后调用方法。 这工作,虽然我的特殊设计,我想要求用户在编译时被验证(例如,不通过可变参数/反射)构造函数中指定某些参数。

Answer 1:

你不能。 如果你想在你的基类带参数的构造-没有无参数的构造-你必须定义构造函数(并调用super()构造函数)在每个派生类的。



Answer 2:

对方回复是正确的,Java将不会让你继承构造函数。 但是,集成开发环境可以用来帮助缓解这些创造所有班级的庞大负担。

在Eclipse中去“来源”菜单,选择“从超类生成Contructors ......”。 使用此对话框创建一个新的类时,你也可以选择此作为一个选项。



Answer 3:

遗产

发明内容:一个子类从其超类继承所有成员(字段,方法和嵌套类)。 构造函数不是成员,因此他们没有继承到子类,但是超类的构造函数可以从子类中调用。



Answer 4:

你不能在java中。 没有方法明确声明他们无法给出一个方法的参数。 也许这样做不会是最好的主意,就可能导致非常混乱的代码和过度复杂的事情。 不必键入一些多余的字符的选择是没有糟糕。 :d



Answer 5:

如果你有一个默认值要分配您可以创建在调用参数的构造函数的基类的空构造。

这将消除需要子类调用参数化的构造。



文章来源: Java: Inherit constructor