子类不需要父构造函数

Fin*_*ent 3 java constructor abstract-class extends

我在Eclipse编程,发现了一些奇怪的东西......

如果我创建一个这样的类:

public abstract class Test {
    public Test(Object obj) {}
}
Run Code Online (Sandbox Code Playgroud)

任何儿童班显然都需要super()填写.

同样适用于:

public abstract class Test {
    public Test(Object[] obj) {}
}
Run Code Online (Sandbox Code Playgroud)

那么为什么我的IDE不会在我执行以下操作时抱怨,而不提供super()

public abstract class Test {
    public Test(Object... obj) {}
}
Run Code Online (Sandbox Code Playgroud)

你说"只是运行程序,它会失败"之前,我用JUnit和程序运行正常,没有在扩展的类提供一个构造函数.我的问题是,为什么会发生这种情况?

子类看起来像这样:

public class Child extends Test {
    // Should throw error.
}
Run Code Online (Sandbox Code Playgroud)

Tuy*_*NTA 5

使用此方法,public Test(Object... obj)您可以输入0或更多参数.默认情况下,如果构造函数未显式调用父构造函数,super()则将隐式调用.您不必显式调用它,因为语法Object... obj用于通用情况,无论您是否传入参数.如果你想强制用户传入一个参数,那么你只需要将参数声明为List.