[Java] 关于编写继承类的构造方法时报错的问题

前段时间在学习中遇到一个问题:

对代码进一步修改后发现:

原因:父类中由于已经显式定义了一个有参构造方法故编译器不再给予无参构造方法,而继承类中的构造方法也没有明确指出实现哪一个父类构造方法,故编译器给予继承类构造方法一个super()(隐式表达),但父类中很明显没有无参构造方法,故报错。

顺带再总结一下知识点:

1.对于一个继承类来说,其构造方法内部至少要实现一个父类的构造方法(至少有一个继承类构造方法去实现任何一个父类构造方法就可以)。

2.如果继承类中的构造方法(不管是有参还是无参)没有明确指定要实现的父类构造方法,则编译器将自动给予一个super()在继承类构造方法的内部,以实现父类的无参构造方法(该代码不会显式表达)。

3.在继承类的构造方法中,如明确指定了实现父类中的某一个构造函数,则该继承类构造方法不会再自动获得一个super()。

4.继承类中的非构造方法不能实现父类构造方法,也不会自动获得一个super(),故无论父类的构造方法是什么也不会对它产生影响。

5.父类如果没有明确编写一个或多个构造方法,则编译器自动给予父类一个无参构造方法,当有明确编写一个或多个构造方法,则不会自动给予。

总之,在平时编写程序时最好显式编写一个父类的无参构造方法,可以避免如上状况发生。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值