我想知道为什么java构造函数不会被继承?你知道什么时候有这样的课:
public class Super {
public Super(ServiceA serviceA, ServiceB serviceB, ServiceC serviceC){
this.serviceA = serviceA;
//etc
}
}
Run Code Online (Sandbox Code Playgroud)
稍后当你继承时Super,java会抱怨没有定义默认的构造函数.解决方案显然是这样的:
public class Son extends Super{
public Son(ServiceA serviceA, ServiceB serviceB, ServiceC serviceC){
super(serviceA,serviceB,serviceC);
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码是重复的,而不是干的和无用的(恕我直言)...所以这又带来了问题:
为什么java不支持构造函数继承?不允许这种继承有什么好处吗?
考虑我正在扩展一个类,如:
public class MyComboBox<T> extends JComboBox<T> {
public MyComboBox() {
super();
}
public MyComboBox(ComboBoxModel<T> model ) {
super(model);
}
}
Run Code Online (Sandbox Code Playgroud)
重新定义父的构造函数(当然适合我的新类)很烦人,但是复制每个构造函数的文档甚至更糟.更不用说它对于进一步继承是不好的,因为我现在必须多次更新文档.
显然,{@inheritDoc}不会起作用,因为我没有压倒任何东西.然而,这是我正在寻找的行为.有没有办法实现这个目标?
如何继承父构造函数文档?