A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

E:\11.jpg子类中隐含的super()语句调用父类中的空参数构造函数,父类中如果没有写明空参数构造函数不是默认就有吗?怎么会编译失败?

9 个回复

倒序浏览
代码截图发不上去,下面再发下

11.jpg (27.58 KB, 下载次数: 173)

11.jpg
回复 使用道具 举报
如果你写了有参数的构造方法 那么默认的无参构造就没了  必须自己手动声明一个无参构造方法才行
回复 使用道具 举报
系统默认的空参数构造函数是在你没有定义构造函数的情况下才为你加上。如果你定义了构造函数,如果你要使用空参数的构造函数你就必须显示的定义出来。
回复 使用道具 举报
你在父类中已经定义了一个有参构造函数了,那么就没有了默认的无参构造函数。只有父类中没有定构造函数的情况下,才会自动为你添加一个默认的无参构造函数。
回复 使用道具 举报
如果你写了有参数的构造方法 那么默认的无参构造就没了  必须自己手动声明一个无参构造方法才行
回复 使用道具 举报
是这样的一个情况,如果该类你自己又写了一个有参的构造函数的话,它就不提供无参的构造函数,那就需要你自己写一个无参的构造函数了

而如果你没有写有参构造函数的话,它默认会为你提供一个无参的构造函数哦

不知道是否听明白了
回复 使用道具 举报
程洪 金牌黑马 2012-3-13 14:20:28
8#
在类中 如果你已经写了带参数的方法 那么空参数的构造函数就会被复写掉
换句话说 如果你自定义了有参的构造方法 那么空参数的构造方法 在父类中也就没有了

而你的代码  Demo方法 并不算是复写的父类方法! 应该如下传入父类的构造方法

public Demo_1(String s)
        {
                super(s);
                i=2;
        }

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
你自定义构造方法之后就编译器就不会为你写默认的无参数构造方法了。
回复 使用道具 举报
如果你父类写了构造函数,默认的构造函数就没有了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马