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

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

图片说明

图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条)

报告相同问题?

悬赏问题

  • ¥20 Python安装cvxpy库出问题
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题