小编典典

Java构造函数继承

all

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

}

这段代码是重复的,而不是干燥和无用的(恕我直言)......所以再次带来了问题:

为什么java不支持构造函数继承? 不允许这种继承有什么好处吗?


阅读 115

收藏
2022-07-04

共1个答案

小编典典

假设构造函数 继承的……那么因为每个类最终都派生自 Object,所以每个类最终 都会 有一个无参数的构造函数。这是个坏主意。你究竟会期待什么:

FileInputStream stream = new FileInputStream();

去做?

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

2022-07-04