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