1个回答
展开全部
I 类加一个 I(int x) 的构造器,或者 K 类加一个无参构造器,就可以了:
public I(int x){
super(x);
}
原因:
在类中,当不手动添加构造器时,默认都有一个无参数的构造器,当手动添加了构造器时,默认的无参数的构造器就没有了。
子类默认会去调用父类相同参数的构造器
K 类手动写了含一个参数的构造器,默认的无参构造器就没有了。I 类没有手动写构造器,所以默认有一个无参数的构造器。所以 I 类无参数的构造器会去调用 K 类无参数的构造器,而 K 类没有无参数构造器,所以报错。
解决方案:
第一种方案是 K 类手动添加一个无参数构造器
第二种方案是 I 类手动添加一个含一个 int 参数的构造器
的三种方案是 I 类中在无参数构造器中手动去调用 K 类中的 K(int x) 构造器
更多追问追答
追问
你好,子类默认会去调用父类相同参数的构造器,这句话我没懂,你所说的这种情况啥时候会发生,都会发生还是我这种情况才会发生?
追答
必须的,不只是你这种情况。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询