黑马程序员技术交流社区

标题: 空参数构造函数没写出来的话,不是默认就有么 [打印本页]

作者: 王利强    时间: 2012-3-13 12:17
标题: 空参数构造函数没写出来的话,不是默认就有么
E:\11.jpg子类中隐含的super()语句调用父类中的空参数构造函数,父类中如果没有写明空参数构造函数不是默认就有吗?怎么会编译失败?
作者: 王利强    时间: 2012-3-13 12:19
代码截图发不上去,下面再发下

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

11.jpg

作者: lucky_xingxing    时间: 2012-3-13 12:22
如果你写了有参数的构造方法 那么默认的无参构造就没了  必须自己手动声明一个无参构造方法才行
作者: 王杰    时间: 2012-3-13 12:37
系统默认的空参数构造函数是在你没有定义构造函数的情况下才为你加上。如果你定义了构造函数,如果你要使用空参数的构造函数你就必须显示的定义出来。
作者: 肖岑锋    时间: 2012-3-13 12:48
你在父类中已经定义了一个有参构造函数了,那么就没有了默认的无参构造函数。只有父类中没有定构造函数的情况下,才会自动为你添加一个默认的无参构造函数。
作者: 黑马张平    时间: 2012-3-13 12:50
如果你写了有参数的构造方法 那么默认的无参构造就没了  必须自己手动声明一个无参构造方法才行
作者: baypm_jy    时间: 2012-3-13 13:50
是这样的一个情况,如果该类你自己又写了一个有参的构造函数的话,它就不提供无参的构造函数,那就需要你自己写一个无参的构造函数了

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

不知道是否听明白了
作者: 程洪    时间: 2012-3-13 14:20
在类中 如果你已经写了带参数的方法 那么空参数的构造函数就会被复写掉
换句话说 如果你自定义了有参的构造方法 那么空参数的构造方法 在父类中也就没有了

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

public Demo_1(String s)
        {
                super(s);
                i=2;
        }
作者: 张希强    时间: 2012-3-13 14:40
你自定义构造方法之后就编译器就不会为你写默认的无参数构造方法了。
作者: 张一凡    时间: 2012-3-13 14:42
如果你父类写了构造函数,默认的构造函数就没有了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2