黑马程序员技术交流社区

标题: 构造函数 [打印本页]

作者: 年轻的棒棒    时间: 2013-5-23 11:29
标题: 构造函数
本帖最后由 年轻的棒棒 于 2013-5-23 12:08 编辑

在一个类中,如果有一个指定的构造函数,默认的构造函数就没有了。
那么一创建对象,就是构造函数里的值么?
如:
class Demo{
int num;
Demo{
num=11;
}
这个num会先是0后转为了11,拿num-0是不是调用了默认的构造函数呢?
}
作者: 画饼    时间: 2013-5-23 11:33
你上面那个类,创建对象就要传值啊。传了值,它就赋值给num了
作者: 画饼    时间: 2013-5-23 11:34
看错了,你那个构造函数,有问题啊,你都没有写括号,里面到底传不传值,你也没定。。
作者: tshch1989    时间: 2013-5-23 11:40
class Demo{
int num;
Demo(){
num=11;
}
}

构造函数格式有点点错误,这个你再试试
作者: Miss小强    时间: 2013-5-23 11:44
构造函数写法
public Demo(){}
你指定了构造函数,那么默认的就没有了,而你所说的赋值为0是默认初始化的结果;
并没有调用什么构造函数;
也就是说,在调用构造函数之前,是会有默认初始化,即赋值0;
可以在num=11;之前加打印语句 sop(num);
一般建议,我们自己写了有参构造函数,最好加一个无参构造函数;
希望对你有用;
作者: 袁梦希    时间: 2013-5-23 11:50
楼主你好:能看出来你是认真提的问题,非常好,所以给你加1分。

那么构造函数什么时候被调用呢?,
就是当Demo对象被创建的时候,才会调用构造函数,
那么什么时候表示对象被创建呢,当你 new Demo();的时候表示对象创建了,
前面也可以加个引用变量来指向这个对象的内存首地址。
这样看来成员变量与构造函数里的值没有直接关系,必须通过创建对象才能产生关系。

建议楼主再看看关于this()在构造函数的作用,由于时间关系,我还要搜帖,就不回答那么详细了,加油,我会关注你的。
作者: 年轻的棒棒    时间: 2013-5-23 12:08
我了解了,谢谢!




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