權限修飾符
Java中修飾符總結:
- 訪問控制修飾符
作用: 用於控制被修飾變量、方法、類的可見範圍.
public 的訪問級別是最高的,其次是 protected、默認和 private.
成員變量和成員方法可以處於4個訪問級別中的一個:公開、受保護、默認或私有.
存在繼承關系時,父類不可以是 private,因為子類無法繼承
頂層類可以處於公開或默認級別,頂層類不能被 protected 和 private 修飾.
局部變量不能被訪問控制修飾符修飾 .
下圖是在不同情況下各種權限修飾符的作用範圍:
總結: 在不同包下面能夠訪問的權限修飾符只有: pulbic 與protected,但是 protected 必須要有繼承的關系才能夠訪問。
-
abstract 修飾符
抽象類不能被實例化.
抽象類中可以沒有抽象方法,但包含了抽象方法的類必須被定義為抽象方法.
如果子類沒有實現父類中所有的抽象方法,子類也必須定義為抽象類.
抽象類不能被定義為 private、final、和 static 類型.
沒有抽象的構造方法.
抽象方法沒有方法體,如果一個方法沒有方法體,那麽該方法必須聲明為抽象的方法.
非抽象類繼承抽象類的時候,必須要把抽象類中的所有抽象方法實現. -
final 修飾符
final 變量必須被顯式初始化,並且只能被賦值一次值
final 修飾基本類型變量的時候, 該變量不能重新賦值
final 修飾引用類型變量的時候, 該變量不能重新指向其他對象
final 修飾的方法為最終的方法, 該方法不能被重寫
private 類型的方法都默認為是final方法,因而也不能被子類重寫
final 修飾的類為最終的類, 不能被繼承 -
static 修飾符
如果聲明了靜態方法或變量,值是放在方法區,因為方法區是一個數據共享區;所以不管什麽變量訪問它,都是同一份.
在靜態方法中不能直接訪問實例方法和實例變量.
在靜態方法中不能使用 this 和 super 關鍵字.
靜態方法不能被 abstract 修飾.
靜態的成員變量可以使用類名或者是對象進行訪問,非靜態成員變量只能使用對象進行訪問.
靜態函數可以直接訪問靜態的成員,但是不能夠直接訪問非靜態成員.,非靜態函數可以訪問靜態和非靜態成員.
當類被加載時,靜態代碼塊只能被執行一次。類中不同的靜態方法代碼塊按他們在類中出現的順序被依次執行.
當多個修飾符連用時,修飾符的順序可以顛倒,不過作為普遍遵守的編碼規範,通常把訪問控制修飾符放在首位,其次是 static 或 abstact 修飾符,接著就是其他的修飾符註意:以下修飾符一起用是無意義的,會導致編譯錯誤:
abstract 與 private
abstract 與 final
abstract 與 static
權限修飾符