2 回答

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個贊
我覺得,是類方法(靜態(tài)方法)還是實(shí)例方法,關(guān)鍵是:這個方法是否需要類的某個具體實(shí)例的存在,這個方法是否需要作用在類某個具體實(shí)例上。說白了就是是否需要this
的存在。
構(gòu)造方法就是在類的實(shí)例產(chǎn)生后,對這個新生的特定的實(shí)例對象進(jìn)行初始化的,當(dāng)然類似于實(shí)例方法,而不是類方法。

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個贊
構(gòu)造函數(shù)的意義是什么?
主要的作用其實(shí)就是初始化一些實(shí)例屬性,現(xiàn)在將構(gòu)造函數(shù)設(shè)計成靜態(tài)的,那么勢必會出現(xiàn)靜態(tài)方法訪問實(shí)例屬性的情況。
解決方案有兩種:
1.JVM可以為靜態(tài)構(gòu)造函數(shù)隱式的增加一個對對象的引用,就像內(nèi)部類有一個隱式的對外部類的引用一樣,然后通過這個引用訪問對象的實(shí)例屬性,但是從代碼是看不出來的,這樣的話就與Java語言的規(guī)范出現(xiàn)沖突:靜態(tài)方法不可訪問實(shí)例域,所以不可取。
2.使用像python那種解決方法,構(gòu)造函數(shù)的第一個參數(shù)默認(rèn)就是對對象的引用,如self,然后訪問對象的實(shí)例域就通過self進(jìn)行訪問,但是這種代碼符合Java的風(fēng)格嗎?會被吐槽死吧
所以為啥不直接使用實(shí)例方法呢,多方便
添加回答
舉報