關(guān)于靜態(tài)方法不能調(diào)用非靜態(tài)方法的問題
基本前提:靜態(tài)方法不能調(diào)用非靜態(tài)成員(成員方法與成員變量)
代碼:一個(gè)main方法可以這么寫:
class?Demo{ ????public?static?void?main(String[]?args){ ????????Demo?d?=?new?Demo(); ????????} ????}
解釋:這里用的是Demo的內(nèi)置無參構(gòu)造函數(shù),構(gòu)造函數(shù)也是一個(gè)普通函數(shù),也沒有被static修飾,所以從這里理解構(gòu)造函數(shù)只是一個(gè)成員函數(shù)。
問題:那么,作為靜態(tài)函數(shù)的main,是如何調(diào)用作為成員函數(shù)的構(gòu)造函數(shù)的?
2017-08-27
2017-09-05
這個(gè)問題我算是終于找到正確答案了,如下:
參考鏈接:http://rednaxelafx.iteye.com/blog/652719
準(zhǔn)確來說,構(gòu)造方法(Constructor)實(shí)際上與普通方法(Method)是兩個(gè)東西,大概翻譯過來的時(shí)候?yàn)榱舜蠹胰菀咨鲜志驼f是構(gòu)造方法了。其實(shí)這有點(diǎn)混淆了。
從JVM上看,靜態(tài)static方法與構(gòu)造方法(constructor)在內(nèi)聯(lián)優(yōu)化的時(shí)候,效果是一樣的,不過這不能說構(gòu)造方法就是static。
其實(shí)最后還是不太清楚,JVM原理還是不太清楚,不過基本可以理解。
2017-08-27
靜態(tài)屬性調(diào)用的時(shí)候不能創(chuàng)建實(shí)例,非靜態(tài)屬性必須通過創(chuàng)建的實(shí)例才能調(diào)用
2017-08-27
為排除main程序的特殊性,再貼一段非main函數(shù)Demo:如下:
2017-08-27
這是main函數(shù),不一樣