在Java中,据我所知,子类不会继承带有参数的构造函数。
例如:
例如:
public class Parent {
public Parent(int x) {
DoSomethingWithX(x);
}
}
public class Child extends Parent {
// Compile fails with "Implicit super constructor Parent() is undefined
// for default constructor. Must define an explicit constructor
}
在Child类中创建一个无用的传递构造函数是唯一的修复方法:public class Child extends Parent {
public Child(int x) {
super(x);
}
}
问题:
如果我有一个包含 6-10 个子类的复杂继承体系,给每个子类都加上这样一个无意义的传递参数的构造函数似乎不是一个好主意!
- 代码看起来很愚蠢(10 个类中都有相同的方法副本)。
- 更糟糕的是,与任何重复代码一样,代码变得容易出错——任何更改(例如添加一个参数)都需要在 10 个地方进行修改,而不是一个地方。
问题:
有没有一种方法可以避免在大型类层次结构中出现这种问题?
注意:
我知道一种解决方案是为参数设置一个 setter(必须从构造函数单独调用)。但这种解决方案有几个很大的缺点,因此不能接受。