求教一个继承中构造方法的问题 有这样一个例子:
答案:2 悬赏:40 手机版
解决时间 2021-12-23 12:00
- 提问者网友:原来太熟悉了会陌生
- 2021-12-22 13:26
super();却不会出错呢?难道系统没有默认调用父类的无参构造方法吗.println("class 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()有无参数都行
还有一点题外的,直接写其他的代码就必然报错了
如果是this(),像你没有提供父类的无参构造,如果你没有写系统会默认的加入super()是的 但是不全面
构造方法第一句必须是this()或super()有无参数都行
全部回答
- 1楼网友:刀戟声无边
- 2021-12-22 14:24
你好!
。
所以在子类中执行的时候 就没有接收到要调用父类无参构造方法的命令。this(4)这里的4 就是你传的参数。。。 你在子类中根本就没调用与父类有关的无参构造方法。。。你的父类的无参的构造方法哪去了? 你把无参的写出来吧。另外 你在子类调用的是有参的构造方法。。。
希望对你有所帮助,望采纳。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯