中易网

JAVA的父类中是不是一定要有无参数的构造方法?为什么我不在父类中写空参数的构造方法就不能编译通过呢

答案:3  悬赏:60  
解决时间 2021-01-08 10:21
JAVA的父类中是不是一定要有无参数的构造方法?为什么我不在父类中写空参数的构造方法就不能编译通过呢
最佳答案
这个问题呢是这样的,当我们创建一个类的时候,如果我们没有创建一个构造方法(哪怕是无参数的)。JVM会帮助我们创建一个默认的构造方法,也称为无参构造方法。但是如果我们创建一个构造方法时,JVM就不会再为我们生成一个默认的构造方法。有时有必要的显示的写出这个默认构造函数,也就是无参构造函数。所以当这个类被继承时,子类就会默认的调用这个无参构造方法。
如果你想显示的调用父类的构造方法,可以使用super()在子类的构造方法中的第一句。(构造方法中只能调用构造方法一次)。如果你在父类中没有写无参构造方法,那么在子类的构造方法中必须显示的调用父类中的有参数的构造方法(写在第一句)。
全部回答
每个构造方法第一句代码都必须是super(),这意思是请求调用父类的构造方法,
因为每个对象在构造成功以前,都必须先构造其父亲,父亲成功造了,才能有儿子撒。
在默认情况下,每个类如果你不写构造方法,它们都会有一个无参的空构造方法。
你报错的原因,是因为你在子类构造方法中调用了父类有参的构造方法,而编译器发现,父类中只有无参的构造方法,找不到你那个对应的。所以它认为你的父类对象构造失败,没父,哪能有儿?
不一定。
java子类的构造过程方法必须调用父类的构造方法,java采用这种机制保证父类的初始化
不显式调用的时候编译器会默认调用父类的无参那个,如果父类没有就报错。
所以你的情况可以在子类中显式调用父类的有参的构造方法。追问怎么显式调用?追答用super关键字,例如
class A {
private String name;
public A(String name) {
this.name = name;
}
}
public class B extends A {
public B() {
super("张三");
}
public B(String name) {
super(name);
}
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
"……相开放"的成语是什么?
DOTA晕眩能被净化吗?
高层建筑增加费计算时应注意些什么
求解签:杨四将军庙灵签 第六签 尾火虎 古人
安装FlashPaper2.2想把word转换swf格式!!!
怎么凉拌糖醋木耳好吃
根号39怎么化简
草字头加孔念什么
长2公里宽550米是多少平方米
野猫来我家偷吃东西..有什么办法抓住它 ?
买榴莲的人说把榴莲放在那等它裂开才能吃是吗
爸爸四十五岁,上齿有一颗好松怎么办
‘少无适俗韵,性本爱丘山。误落尘网中,一去
我的电脑为什么老是开机有奇怪的响声
歌词 轻轻的把手一挥,只对我说声再会 谁知道
推荐资讯
用友t+12.1 怎样导出物料清单子件
我在万达三楼干活发不了工资万达管吗
农历7l年12月20日是什么星座
18立方厘米等于多少毫升?等于多少升?
辽宁沈阳有哪些三本大学。
什么是钢琴即兴伴奏
superwifi超级路由器用英语怎么说
人死外地后再入祖坟的讲究
除尘滤袋的使用特点和使用方法是什么?
赛维,干洗怎么样,自己打算去总部看看!
找规律填数3,5,6,10,9,15()()()()
养羊前,养羊后,对比,亲们还要养羊吗
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?