成員變量和類變量的區別


成員變量:是定義在類中,方法體之外的變量。這種變量在創建對象的時候實例化。成員變量可以被類中方法、構造方法和特定類的語句塊訪問。

類變量:也聲明在類中,方法體之外,但必須聲明為static類型。

 

1.生命周期不同

成員變量是對象創建時而存在,隨着對象的回收而被釋放

類變量是類創建的時候而存在,隨着類的消失而消失的;

 

2.調用方

成員變量只能被對象調用,作用域是在對象中

類變量可以被對象調用,還可以被類名調用

 

3.別名不同

成員變量稱實例變量

類變量也稱靜態變量

 

static:★★★ 關鍵字,是一個修飾符,用於修飾成員(成員變量和成員函數)。

靜態方法只能訪問靜態成員,不可以訪問非靜態成員。

因為靜態方法加載時,優先於對象存在,所以沒有辦法訪問對象中的成員。

靜態方法中不能使用this,super關鍵字。

因為this代表對象,而靜態在時,有可能沒有對象,所以this無法使用。

 

 

什么時候定義靜態成員呢?或者說:定義成員時,到底需不需要被靜態修飾呢?

成員分兩種:

1、成員變量。(數據共享時靜態化)

該成員變量的數據是否是所有對象都一樣:

如果是,那么該變量需要被靜態修飾,因為是共享的數據

如果不是,那么就說這是對象的特有數據,要存儲到對象中。

2、成員函數。(方法中沒有調用特有數據時就定義成靜態)

如果判斷成員函數是否需要被靜態修飾呢?

只要參考,該函數內是否訪問了對象中的特有數據:

如果有訪問特有數據,那方法不能被靜態修飾。

如果沒有訪問過特有數據,那么這個方法需要被靜態修飾。

 

 

成員變量和靜態變量的區別:

1、成員變量所屬於對象。所以也稱為實例變量。

靜態變量所屬於類。所以也稱為類變量。

2、成員變量存在於堆內存中。

靜態變量存在於方法區中。

3、成員變量隨着對象創建而存在。隨着對象被回收而消失。

靜態變量隨着類的加載而存在。隨着類的消失而消失。

4、成員變量只能被對象所調用 。

靜態變量可以被對象調用,也可以被類名調用。

所以,成員變量可以稱為對象的特有數據,靜態變量稱為對象的共享數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM