Child 类 不需要 parent 构造函数
Child classes not requiring parent constructor
我在 Eclipse 中编程并发现了一些东西运行ge...
如果我像这样创建 class:
public abstract class Test {
public Test(Object obj) {}
}
任何child class显然需要填写super()
。
同样适用于:
public abstract class Test {
public Test(Object[] obj) {}
}
那么,为什么我的 IDE 在我执行以下操作时不抱怨,也不提供 super()
?
public abstract class Test {
public Test(Object... obj) {}
}
在你说 "just run the program, it will fail" 之前,我使用了 JUnit 和程序 运行 很好,没有在扩展 class 中提供构造函数。我的问题是,为什么会这样?
child class 看起来像这样:
public class Child extends Test {
// Should throw error.
}
使用此方法public Test(Object... obj)
,您可以输入 0 个或多个参数。默认情况下,如果构造函数没有显式调用父构造函数,那么 super()
将被隐式调用。您不必显式调用它,因为语法 Object... obj
用于一般情况,无论您是否传入参数。如果你想强制用户传递参数,那么你只需要将参数声明为 List
即可。
我在 Eclipse 中编程并发现了一些东西运行ge...
如果我像这样创建 class:
public abstract class Test {
public Test(Object obj) {}
}
任何child class显然需要填写super()
。
同样适用于:
public abstract class Test {
public Test(Object[] obj) {}
}
那么,为什么我的 IDE 在我执行以下操作时不抱怨,也不提供 super()
?
public abstract class Test {
public Test(Object... obj) {}
}
在你说 "just run the program, it will fail" 之前,我使用了 JUnit 和程序 运行 很好,没有在扩展 class 中提供构造函数。我的问题是,为什么会这样?
child class 看起来像这样:
public class Child extends Test {
// Should throw error.
}
使用此方法public Test(Object... obj)
,您可以输入 0 个或多个参数。默认情况下,如果构造函数没有显式调用父构造函数,那么 super()
将被隐式调用。您不必显式调用它,因为语法 Object... obj
用于一般情况,无论您是否传入参数。如果你想强制用户传递参数,那么你只需要将参数声明为 List
即可。