1. 程式人生 > >java中的各種修飾符作用範圍

java中的各種修飾符作用範圍

訪問修飾符:

  • private
  • 預設
  • protected
  • public

    作用範圍:

訪問修飾符\作用範圍 所在類 同一包內其他類 其他包內子類 其他包內非子類
private 可以訪問 不可以 不可以 不可以
預設 可以 可以 不可以 不可以
protected 可以 可以 可以 不可以
public 可以 可以 可以 可以
  • private
    被private修飾的屬性和方法,不能被其他類訪問,子類不能繼承也不能訪問。只能在所在類內部訪問。
  • 預設
    變數或者方法前沒有訪問修飾符時,可以被所在類訪問,可以被同一包內的其他類訪問 或者繼承。但是不能被其他包訪問。
  • protected
    被protected修飾的方法和屬性,在同一包內可被訪問和繼承。不同包內,子類可繼承,非子類不能訪問。
  • public
    方法和屬性前有public修飾,可以被任意包內的類訪問。
    另外,類要想被其他包匯入,必須宣告為public。被public修飾的類,類名必須與檔名相同。

靜態修飾符的特點:


static是一個修飾符,用於修飾成員(成員變數和成員函式)

  1. 靜態成員隨著類的載入而載入。
  2. 靜態成員優先於物件存在。
  3. 靜態成員被所有物件所共享
  4. 靜態成員多了一箇中呼叫方式,可以被類名直接呼叫。

靜態使用的注意事項。

  1. 靜態方法只能訪問靜態成員, 非靜態方法既可以訪問靜態又可以訪問非靜態。
  2. 靜態方法中不可以定義this,super關鍵字。因為this代表是物件。而靜態存在時,有可能沒有物件。所以靜態方法執行時,this是沒有任何物件代表的。
    簡單說,先進記憶體的資料不可以訪問後進記憶體的資料,可是後進記憶體資料可以訪問先進記憶體的資料。
  3. 主函式是靜態的

靜態的優缺點

優點: 靜態成員多了一種呼叫方式。可以直接被類名呼叫 格式 :類名.靜態成員。也可以被物件呼叫。
弊端 : 靜態方法只能訪問靜態成員,出現了訪問侷限性。

靜態修飾的資料物件共享的資料,存放在方法區的靜態區中。
非靜態的資料,是每一個物件特有資料。存放在物件的所屬的堆記憶體中。

當成員變數被靜態修飾後,和非靜態成員變數的區別:

  1. 靜態變數也稱為類變數,也就是直接可以被類名呼叫的變數。這個變數是所屬於類的。
    非靜態變數成為成員變數,或者例項變數,是被物件呼叫的,是所屬具體物件的。
  2. 靜態變數隨著類的載入而載入,也意味著隨著類的消失而消失。生命週期最長。
    例項變數,隨著物件的建立而載入,隨著物件的消失而消失。按照物件的生命週期而存在。
  3. 靜態變數儲存在方法區的靜態區中。
    例項變數存在於物件所屬的堆記憶體中。
  4. 靜態變數資料,被所有物件所共享。
    例項變數是物件中的特有資料