1. 程式人生 > >Java訪問控制修飾符

Java訪問控制修飾符

end evel 註意 cap pla ola 不能訪問 發生 調用

訪問控制修飾符

Java中,可以使用訪問控制符來保護對類、變量、方法和構造方法的訪問。Javav支持 4 種不同的訪問權限。

  • default (即缺省,什麽也不寫): 在同一包內可見,不使用任何修飾符。使用對象:類、接口、變量、方法。

  • private : 在同一類內可見。使用對象:變量、方法。 註意:不能修飾類(外部類)

  • public : 對所有類可見。使用對象:類、接口、變量、方法

  • protected : 對同一包內的類和所有子類可見。使用對象:變量、方法。 註意:不能修飾類(外部類)

我們可以可以通過以下表來說明訪問權限:

訪問控制
修飾符當前類同一包內子孫類其他包
public Y Y Y Y
protected Y Y Y N
default Y Y N N
private Y N N N
 1 class AudioPlayer {
 2    protected boolean openSpeaker(Speaker sp) {
 3       // 實現細節
 4    }
 5 }
 6  
 7 class StreamingAudioPlayer extends AudioPlayer {
 8    protected boolean openSpeaker(Speaker sp) {
 9       // 實現細節
10
} 11 }

如果把 openSpeaker() 方法聲明為 private,那麽除了 AudioPlayer 之外的類將不能訪問該方法。

如果把 openSpeaker() 聲明為 public,那麽所有的類都能夠訪問該方法。

如果我們只想讓該方法對其所在類的子類可見,則將該方法聲明為 protected。

非訪問修飾符

為了實現一些其他的功能,Java 也提供了許多非訪問修飾符。

static 修飾符,用來修飾類方法和類變量。

final 修飾符,用來修飾類、方法和變量,final 修飾的類不能夠被繼承,修飾的方法不能被繼承類重新定義,修飾的變量為常量,是不可修改的。

abstract 修飾符,用來創建抽象類和抽象方法。

synchronized 和 volatile 修飾符,主要用於線程的編程。

static 修飾符

  • 靜態變量:

    static 關鍵字用來聲明獨立於對象的靜態變量,無論一個類實例化多少對象,它的靜態變量只有一份拷貝。 靜態變量也被稱為類變量。局部變量不能被聲明為 static 變量。

  • 靜態方法:

    static 關鍵字用來聲明獨立於對象的靜態方法。靜態方法不能使用類的非靜態變量。靜態方法從參數列表得到數據,然後計算這些數據。

  • 靜態變量並不是說其就不能改變值,不能改變值的量叫常量。 其擁有的值是可變的 ,而且它會保持最新的值。說其靜態,是因為它不會隨著函數的調用和退出而發生變化。即上次調用函數的時候,如果我們給靜態變量賦予某個值的話,下次函數調用時,這個值保持不變。

Java訪問控制修飾符