亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于構造方法

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入門第三季
  • 參與學習       409767    人
  • 解答問題       4543    個

Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧

進入課程

關于構造方法

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號