我以为我理解了 super 的作用,但是我无法理解下面代码中的原因
class test {
int i;
test(int i){
this.i = i;
}
}
class testSub extends test{
testSub(int i) {
super(i);
}
/*testSub(int i) {
this.i = i;
}*/
}
为什么第二个构造函数(已注释)不起作用?它正在做同样的事情..
感谢您的任何澄清:)
编辑:谢谢大家 - 抱歉我无法标记更多答案。如果这不应该是一个编辑,也很抱歉。
快速回顾一下:由于 testSub 是父测试的子级,因此即使构造函数执行相同的操作,子级也需要由其父级部分组成。只有当 test 具有默认构造函数时,这才是可能的。 如果我没说清楚,请回复。
最佳答案
你的类test
有一个显式的构造函数。您必须在每个子类的构造函数中使用此构造函数。
如果test
没有显式构造函数,则会生成一个不带参数的隐式构造函数,并且您不必在子类中显式调用它。在这种情况下,您的第二个构造函数将完全有效。
class test {
int i;
}
class testSub extends test{
testSub(int i) {
this.i = i;
}
}
关于java - 在扩展类构造函数中错误使用 'super',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29594223/