肥川川 2019-07-30 21:44 采纳率: 0%
浏览 1119
已采纳

请问父类中存在有参构造方法时,一定要存在一个同名的无参构造方法吗?

图片说明

图1为父类的无参构造方法和有参构造方法,若是将无参构造方法删除,则子类的有参构造方法会报错。

如图2

图片说明

百度后听说父类可以不存在无参构造方法,但是子类中要使用super(属性名)的形式,我尝试后仍然报错

图片说明

(有想过是不是因为这些属性都被private修饰过才不行,但是将private删去仍然不行)

所以是不是说明,父类中必须存在一个无参的构造方法,因为我们定义了一个有参的构造方法,系统不会再自动帮我们生成无参构造方法,所以要我们自己写出来?

还有就是子类中的这个有参构造方法算不算是对父类构造方法的重写?(似乎不是,重写的话我记得方法名也是要一样的,那么这个构造方法和父类之间的关系是什么呢?)

大佬们能指点一二吗?qwq

  • 写回答

7条回答 默认 最新

  • 1-只小猴子 2019-07-31 09:32
    关注

    1.在你的代码中,pikacar继承了cars (Java类名首字母记着要大写Pikacar/Cars,并且请遵守大驼峰形式PikaCar),父类cars重载(不是重写,谨记)了构造方法。
    如果重载构造方法后没有手动将无参构造方法写出,此时在你的子类pikacar中,构造方法中调用super相关方法,此时super就代表了你父类的无参构造,而你的父类cars已经重载了构造方法并且未手动写出无参构造,因此编译器找不到你的无参构造方法,就会报错。
    2.关于父类构造和子类的构造的关系,无关联,如果非要说关联的话就是当你创建子类对象时会首先调用父类的无参构造

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥18 深度学习tensorflow1,ssdv1,coco数据集训练一个模型
  • ¥100 关于注册表摄像头和麦克风的问题
  • ¥30 代码本地运行正常,但是TOMCAT部署时闪退
  • ¥15 关于#python#的问题
  • ¥15 主机可以ping通路由器但是连不上网怎么办
  • ¥15 数据库一张以时间排好序的表中,找出多次相邻的那些行
  • ¥50 关于DynamoRIO处理多线程程序时候的问题
  • ¥15 kubeadm部署k8s出错
  • ¥15 Abaqus打不开cae文件怎么办?
  • ¥15 小程序准备上线,软件开发公司需要提供哪些资料给甲方