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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么Java中不能有靜態的構造函數?

為什么Java中不能有靜態的構造函數?

HUWWW 2019-03-23 19:15:51
我的理解是這樣的:Java中,構造函數是用來實例化對象的,實例化時必定有確定的引用變量。但在調用靜態函數時編譯器還是通過解析原來的類來調用靜態方法,不通過對象。因此構造函數不能是靜態的。這種理解正確嗎?
查看完整描述

2 回答

?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

我覺得,是類方法(靜態方法)還是實例方法,關鍵是:這個方法是否需要類的某個具體實例的存在,這個方法是否需要作用在類某個具體實例上。說白了就是是否需要this的存在。

構造方法就是在類的實例產生后,對這個新生的特定的實例對象進行初始化的,當然類似于實例方法,而不是類方法。


查看完整回答
反對 回復 2019-04-16
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

構造函數的意義是什么?
主要的作用其實就是初始化一些實例屬性,現在將構造函數設計成靜態的,那么勢必會出現靜態方法訪問實例屬性的情況。
解決方案有兩種:
1.JVM可以為靜態構造函數隱式的增加一個對對象的引用,就像內部類有一個隱式的對外部類的引用一樣,然后通過這個引用訪問對象的實例屬性,但是從代碼是看不出來的,這樣的話就與Java語言的規范出現沖突:靜態方法不可訪問實例域,所以不可取。
2.使用像python那種解決方法,構造函數的第一個參數默認就是對對象的引用,如self,然后訪問對象的實例域就通過self進行訪問,但是這種代碼符合Java的風格嗎?會被吐槽死吧

所以為啥不直接使用實例方法呢,多方便


查看完整回答
反對 回復 2019-04-16
  • 2 回答
  • 0 關注
  • 950 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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