我想知道为什么在java构造函数中没有继承?你知道当你有这样的课时:
public class Super { public Super(ServiceA serviceA, ServiceB serviceB, ServiceC serviceC){ this.serviceA = serviceA; //etc } }
稍后当您从 继承时Super,java 会抱怨没有定义默认构造函数。解决方案显然是这样的:
Super
public class Son extends Super{ public Son(ServiceA serviceA, ServiceB serviceB, ServiceC serviceC){ super(serviceA,serviceB,serviceC); } }
这段代码是重复的,而不是干燥和无用的(恕我直言)......所以再次带来了问题:
为什么java不支持构造函数继承? 不允许这种继承有什么好处吗?
假设构造函数 是 继承的……那么因为每个类最终都派生自 Object,所以每个类最终 都会 有一个无参数的构造函数。这是个坏主意。你究竟会期待什么:
FileInputStream stream = new FileInputStream();
去做?
现在可能应该有一种方法可以轻松创建相当常见的“传递”构造函数,但我认为它不应该是默认值。构造子类所需的参数通常与超类所需的参数不同。