Java构造函数继承

我想知道为什么在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();

去做?

现在可能应该有一种方法可以轻松地创建相当普遍的“直通”构造函数,但是我认为它不是默认设置。构造子类所需的参数通常与超类所需的参数不同。

以上是 Java构造函数继承 的全部内容, 来源链接: utcz.com/qa/405959.html

回到顶部