在java里如果父类又构造方法,是不是子类继承父类的时候,必须在子类中重新定义一个构造器

 我来答
水木泽远
2012-12-07 · TA获得超过222个赞
知道答主
回答量:178
采纳率:0%
帮助的人:62.5万
展开全部
首先说说为什么会有 子类重写 父类的构造方法: 我们知道,子类初始化之前都会首先初始化父类,静态变量不必说了。因为实例变量是在构造函数里面初始化的或者说是通过调用构造函数来初始化的。所以我们要在子类中通过super关键字调用父类构造函数。

编译器默认的话 在子类的构造器的第一行自动编译上super()来调用父类默认的构造函数,只是我们这里省略了,其实这是编译器实现的,代码中不用 显式 写出来罢了。
但是,如果你在编写父类是自己写了带参构造函数但并没有显示的写一个无参构造函数的话,子类中你就必须 显式的 用super关键字在子类的构造函数第一行中写上super(父类参数对应)。当父类中有多个带参的构造函数时,你可以调用任意一个都是可以的,这要根据情况而定!!
最后再说一句:构造函数是用来 初始化 实例变量的!!!子类在初始化之前先初始化父类的实例变量,注意:是实例变量。
WillzhangTsai
推荐于2017-10-07 · TA获得超过780个赞
知道小有建树答主
回答量:382
采纳率:0%
帮助的人:397万
展开全部
构造器本来就可以不用写。
比如你的父类有private A,private B
那么构造函数默认为(A = null;B = null);
子类如果继承了父类,而且有自己的private C
则也是使用默认的(A = null;B = null;C = null);
但是如果父类的构造不是缺省的,比如(A = "aaaa";B = 1);
那么子类在没有构造函数的情况下则是使用(A = "aaaa";B = 1;C = null)构造器
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
历盆郁7
2012-12-07 · TA获得超过4277个赞
知道大有可为答主
回答量:1795
采纳率:100%
帮助的人:963万
展开全部
这个不一定的

1.如果父类有默认构造器(构造器没有参数),则子类随意

2.如果父类没有默认构造器,但是有其他的构造器(有参数),则子类必须要写构造器
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
般若兮若
2012-12-07 · TA获得超过2706个赞
知道小有建树答主
回答量:1246
采纳率:0%
帮助的人:945万
展开全部
每一个类都默认有一个无参的构造方法.并且会默认有一句super()去调用父类的无参构造方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式