关于构造方法

来源:1-5 Java 中的异常抛出以及自定义异常

雪中_悍刀行

2016-07-19 18:01

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回答

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

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

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

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


    li_zhu... 回复雪中_悍刀行

    是的实例化的时候会自动调用

    2016-07-25 09:43:58

    共 2 条回复 >

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

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

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

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

Java入门第三季

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

409792 学习 · 4340 问题

查看课程

相似问题