Java提供了3個訪問控制符:private、protected和public,分別代表了3個訪問控制級別,另外還有一個不加任何訪問控制符的訪問控制級別,提供了4個訪問控制級別。Java的訪問控制級別由小到大如圖所示:
圖中4個訪問控制級別中的default並沒有對應訪問控制符,當不使用任何訪問控制符來修飾類或類成員時,系統默認使用該訪問控制級別。這4個訪問控制級別的詳細介紹如下。
- private(當前類訪問權限):如果類里的一個成員(包括成員變量、方法和構造器等)使用private訪問控制符來修飾,則這個成員只能在當前類的內部被訪問。很顯然,這個訪問控制符用於修飾成員變量最合適,使用它來修飾成員變量就可以把成員變量隱藏在該類的內部。
- default(包(package)訪問權限):如果類里的一個成員(包括成員變量、方法和構造器等)或者一個外部類不使用任何訪問控制修飾,就稱它為包訪問權限的,default訪問控制的成員或外部類可以被相同包下的其他類訪問。
- protected(子類訪問權限):如果一個成員(包括成員變量、方法和構造器等)使用protected訪問控制符修飾,那么這個成員既可以被同一個包中的其他類訪問,也可以被不同包中的子類訪問。在通常情況下,如果使用protected來修飾一個方法,通常是希望其子類來重寫這個方法。
- public(公共訪問權限):這是一個最寬松的訪問控制級別,如果一個成員(包括成員變量、方法和構造器等)或者一個外部類使用public訪問控制符修飾,那么這個成員或外部類就可以被所有類訪問,不管訪問類和被訪問類是否處於同一個包中,是否具有父子繼承關系。