为什么父类写有有参构造函数后在子类里也必须有带参——

为什么父类写有有参构造函数后在子类里也必须有带参——

父类代码:

package com.imooc.animal;


public class Animal {


private String kind;




public Animal(String kind) {


}




public void cry() {


}

}


子类代码:

package com.imooc.animal;


public class Cat extends Animal {






public Cat(String kind) {

super(kind);

// TODO 自动生成的构造函数存根

}


public void cry() {

System.out.println("小猫的叫声:喵喵喵~~~ ");

}



}

为什么父类写有有参构造函数后在子类里也必须有带参构造函数且参数为kind而且方法体内有super()呢?

谢谢!


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

子类Cat构造有没有参数,语法都没有规定。但这里为什么子类构造要加参数呢?是因为子类Cat构造方法默认会走父类Animal()无参数构造方法。而父类不存在无参数构造方法,所以只能走Animal(String kind)而kind从哪来,最好也是外部传来,如果不是外部传来,你直接写死super(“cat”);也是没有问题的。祝:学习愉快

  • Ceoking 提问者 #1
    此句如何理解——“kind从哪来,最好也是外部传来,如果不是外部传来,你直接写死super(“cat”);也是没有问题的”
    2020-03-20 18:57:40
  • 好帮手慕雪 回复 提问者 Ceoking #2
    就是调用super(时传的参数,kind); 你给他传递什么呀。写死成super(“cat”);这样程序太不灵活了吧。所以你让new Cat(时这里传来最好)最灵活。
    2020-03-20 19:04:21
  • Ceoking 提问者 回复 好帮手慕雪 #3
    还是没懂,我也没写super(“cat”);而且我也没写new Cat()
    2020-03-20 19:28:03
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师