1. 程式人生 > >類成員和例項成員的訪問

類成員和例項成員的訪問

1.類成員和例項成員

1)類的成員:欄位,方法,內部類;使用static修飾的成員
2)例項成員:沒有使用static修飾的成員
3)類成員只能訪問類成員,例項成員只能訪問例項成員
4)類成員直接屬於類,可以通過類來訪問static欄位和static方法。例項成員只屬於物件,通過物件來訪問非static欄位和非static方法(物件其實可以訪問類成員,但是底層依然使用類名訪問的)

2.使用類成員跟例項成員的注意事項

1)在static方法中,只能呼叫static成員,否則出現”無法從靜態上下文中引用非靜態變數”
2)非static方法,可以訪問靜態成員,也可以訪問例項成員
3)靜態成員訪問成員變數,該成員變數必須使用static進行修飾

3.什麼時候定義成static的欄位和方法

如果這個狀態/行為屬於整個事物(類),就直接使用static修飾,被所有物件所共享。在開發中往往把工具方法使用static修飾,如所用到的二分法查詢,排序等等,如果不使用static修飾,則這些方法屬於該類的物件,我們得建立物件再呼叫方法,因為建立N個物件會損耗記憶體,降低效能。在開發中工具物件只需要一份即可,可能建立N個物件,此時我們往往把該類設計為單例,但是還是有點麻煩。所以一般的,在開發設計中,為了呼叫簡單,我們使用static修飾
“`
4.類成員使用的優點和缺點

1)優點:對物件的共享資料進行單獨空間的儲存,節省空間,沒有必要每一個物件都儲存一份,可以直接被類名呼叫
2)缺點:生命週期過長。因為類成員是隨著類的載入而載入的,意味著只要JVM還在執行就會一直存在,而不像例項成員那樣,只要物件沒有使用了就會被回收

5.程式碼:

package com.JAVABASIS6;
class ClassDemo2{
void isDo(){
System.out.println(“該學習了”);
}
}
public class StaticAndObjectDemo {
static String name = “成員變數”;
public static void main(String[] args){
//如果成員變數前面不用static進行修飾則會報錯,Cannot make a static reference to the non-static field name,因為靜態變數訪問成員變數,該變數必須使用static進行修飾
System.out.println(name); //輸出為”成員變數”
//當使用這句:ClassDemo2.isDo();//會報錯:Cannot make a static reference to the non-static method isDo() from the type ClassDemo2

}
}