为了账号安全,请及时绑定邮箱和手机立即绑定

关于构造方法

public class Mystery {
private String s;
public void Mystery() { //不是构造方法
s = "constructor";
}
void go() {
System.out.println(s);
}
public static void main(String[] args) {
Mystery m = new Mystery();
m.go();
}
}

以上程序的打印结果为什么为null。

正在回答

3 回答

构造函数是没有没有返回值的,主要是为了区分构造函数和其它方法。其实,你在你的构造函数前加上void,你会发现编译可以通过(用eclipse的话有警告的<如下图>,翻译过来是这个方法有一个构造函数名)。http://img1.sycdn.imooc.com//578dfd98000116e804640243.jpg

证明编译器把它认为是方法,而不是构造函数,当然也无法在new的时候自动调用。

综上:去掉public void Mystery() { //不是构造方法s = "constructor";}中的void。


1 回复 有任何疑惑可以回复我~
#1

雪中_悍刀行 提问者

是不是在调用时,会自动调用构造方法是吧
2016-07-19 回复 有任何疑惑可以回复我~
#2

li_zhuo 回复 雪中_悍刀行 提问者

是的实例化的时候会自动调用
2016-07-25 回复 有任何疑惑可以回复我~

创建了这个对象时,要调用这个类的构造器,第三行的是个方法,去掉 void 是构造方法。

0 回复 有任何疑惑可以回复我~

你的main方法都没有调用Mystery方法给s赋值。所以为空

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409792    人
  • 解答问题       4340    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程

关于构造方法

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信