java入门题。帮看下?

这是啥问题?... 这是啥问题? 展开
 我来答
destiny_葭陘
2020-03-26 · TA获得超过2845个赞
知道大有可为答主
回答量:2131
采纳率:88%
帮助的人:679万
展开全部

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) 构造器

更多追问追答
追问
你好,子类默认会去调用父类相同参数的构造器,这句话我没懂,你所说的这种情况啥时候会发生,都会发生还是我这种情况才会发生?
追答
必须的,不只是你这种情况。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式