问答详情
源自:1-5 Java 中的异常抛出以及自定义异常

关于构造方法

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。

提问者:雪中_悍刀行 2016-07-19 18:01

个回答

  • li_zhuo
    2016-07-19 18:17:08
    已采纳

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

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

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


  • 小伙子爱吃鱼
    2016-07-19 18:23:28

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

  • 李臭妞
    2016-07-19 18:10:22

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