永发信息网

求教一个继承中构造方法的问题 有这样一个例子:

答案:2  悬赏:40  手机版
解决时间 2021-12-23 12:00
  • 提问者网友:原来太熟悉了会陌生
  • 2021-12-22 13:26
super();却不会出错呢?难道系统没有默认调用父类的无参构造方法吗.println(&quotclass Father{ public int value; Father(int value){ System;/super(); this(4); } Child(int i){ super(i).out;father(int)"); } } class Child extends Father{ public int value; Child(){ / this(4); System.out.println("Child(int)"); } } public class TestInherit{ public static void main(String args[]){ Child c = new Child(); } } 问题是这行代码: Child(){ // } 不是说,如果没有显式调用父类的构造方法,系统会默认调用父类的无参构造方法吗? 而且必须是第一行的,为什么当我去掉super()
最佳答案
  • 五星知识达人网友:山有枢
  • 2021-12-22 14:10
那么一定会有个构造调用了super(),子类直接去继承就好了,你这样又定义了一次,相当于两个类都有value,而构造里super(i)是指定父类的value的值的,如果在子类里第一句不写this()之类,如果你父类有int value,相信你明白我说的
还有一点题外的,直接写其他的代码就必然报错了
如果是this(),像你没有提供父类的无参构造,如果你没有写系统会默认的加入super()是的 但是不全面
构造方法第一句必须是this()或super()有无参数都行
全部回答
  • 1楼网友:刀戟声无边
  • 2021-12-22 14:24
你好! 。 所以在子类中执行的时候 就没有接收到要调用父类无参构造方法的命令。this(4)这里的4 就是你传的参数。。。 你在子类中根本就没调用与父类有关的无参构造方法。。。你的父类的无参的构造方法哪去了? 你把无参的写出来吧。另外 你在子类调用的是有参的构造方法。。。 希望对你有所帮助,望采纳。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯