06.24 為什麼靜態方法不能調用非靜態的變量和方法

你想一下嘛 因為靜態是隨著累的加載而加載的 也就是說類只要存在了,那麼靜態就存在了,而靜態是優先於對象存在的 ,你要訪問非靜態的東西,也就是非靜態的成員(包括變量和方法),非靜態的東西還沒存在你怎麼訪問的到嗎??樓主好好想一下就能明白了 下面那個是我學習時的筆記 你看一下吧

/*

靜態:static

用法:是一個修飾符;用於修飾成員(成員變量和成員函數)

當成員被靜態修飾後,就多了一種調用方式,除了可以被對象調用外,還可以直接被類名調用格式:類名.靜態成員

靜態的特點:

1.隨著類的加載而加載

也就是,說靜態會隨著類的消失而消失,說明靜態的生命週期最長

2.優先於對象的存在

明確一點:靜態是先存在的對象是後存在的

3.被所有對象共享

4.可以直接被類名多調用

實例變量和類變量的區別

1.存放位置

類變量隨著類的加載存在於方法區中,實例變量隨著對象的對象的建立存在於堆內存裡

2.生命週期

類變量生命週期最長,隨著“類”的加載而加載,隨著類的消失而消失

實例變量隨著“對象”的消失而消失

靜態的使用注意事項:

1.靜態方法只能訪問靜態成員(包括成員變量和成員方法)

非靜態方法可以訪問靜態也可以訪問非靜態

2.靜態方法中不可以定義this,super關鍵字

因為靜態優先於對象存在,所以靜態方法中不可以出現this,super關鍵字

3.主函數是靜態的。

靜態的利弊

利:對 對象的共享數據進行單獨空間的存儲,節省空間,沒有必要沒一個對象中都存儲一份

可以直接被類名所調用

弊:生命週期過長,訪問出現侷限性(只能訪問靜態)

*/

為什麼靜態方法不能調用非靜態的變量和方法


分享到:


相關文章: