java入门题。帮看下?

这是啥问题?
2025-03-19 13:58:17
推荐回答(1个)
回答(1):

I 类加一个 I(int x) 的构造器,或者 K 类加一个无参构造器,就可以了:

public I(int x){

    super(x);

}


原因:

  1. 在类中,当不手动添加构造器时,默认都有一个无参数的构造器,当手动添加了构造器时,默认的无参数的构造器就没有了。

  2. 子类默认会去调用父类相同参数的构造器

  3. K 类手动写了含一个参数的构造器,默认的无参构造器就没有了。I 类没有手动写构造器,所以默认有一个无参数的构造器。所以 I 类无参数的构造器会去调用 K 类无参数的构造器,而 K 类没有无参数构造器,所以报错。


解决方案:

  1. 第一种方案是 K 类手动添加一个无参数构造器

  2. 第二种方案是 I 类手动添加一个含一个 int 参数的构造器

  3. 的三种方案是 I 类中在无参数构造器中手动去调用 K 类中的 K(int x) 构造器