我有一个简单的Java代码在它的结构看起来类似于:
abstract public class BaseClass {
String someString;
public BaseClass(String someString) {
this.someString = someString;
}
abstract public String getName();
}
public class ACSubClass extends BaseClass {
public ASubClass(String someString) {
super(someString);
}
public String getName() {
return "name value for ASubClass";
}
}
我将有相当几个子类的BaseClass,每个实现getName()方法在自己的方式(template method pattern)。
这工作很好,但我不喜欢在子类中有冗余的构造函数。它是更多的类型,它是很难维护。如果我改变了BaseClass构造函数的方法签名,我将改变所有的子类。
当我从子类中删除构造函数时,我得到这个编译时错误:
隐式超级构造函数BaseClass()未定义为默认构造函数。必须定义一个显式构造函数
是我想要做的可能吗?