这就是我遇到问题的方式。我举个例子:
package check;
public class Check {
int a,b;
Check (int i,int j) {
a = i;
b = j;
}
}
这可以。现在我想通过扩展来创建一个子类Check
。所以我写道:
class V extends Check {
}
刚写完,Eclipse中就出现了一个叉号,点击后发现一条信息:
implicit super constructor Check() is undefined for default constructor. Must define an explicit constructor.
我用谷歌搜索了这个问题并添加了
V (int i, int j) {
super(i, j);
}
Eclipse 也建议这样做。现在我有两个问题。
- 为什么必须使用构造函数
class V
?AFAIK,没有必要创建构造函数,因为 JAVA 编译器会自动创建默认构造函数来进行操作。同样从消息中,似乎还需要一个默认构造函数,但不是我写的,但正如我所说,JAVA不会自动创建它吗? - 另一件事,我将子类中的代码更改为
V(int i, int j){ super.a=i; super.b=j}
.,但仍然出现错误。这是为什么?这段代码不是super.a=i; super.b=j
和 一样super(i,j)
吗?另外,在类 V 中,我可能不需要使用b
,那为什么我需要通过构造函数对其进行初始化呢?