權限修飾符

1. 訪問權限修飾符

作用: 用於控制被修飾變量、方法、類的可見範圍.

  • public 的訪問級別是最高的,其次是 protected、默認和 private.
  • 成員變量和成員方法可以處於4個訪問級別中的一個:公開、受保護、默認或私有.
  • 存在繼承關係時,父類不可以是 private,因爲子類無法繼承
  • 頂層類可以處於公開或默認級別,頂層類不能被 protected 和 private 修飾.
  • 局部變量不能被訪問控制修飾符修飾 .
    下圖是在不同情況下各種權限修飾符的作用範圍:
    這裏寫圖片描述

總結: 在不同包下面能夠訪問的權限修飾符只有: pulbic 與protected,但是 protected 必須要有繼承的關係才能夠訪問。

2. abstract 修飾符

  • 抽象類不能被實例化.
  • 抽象類中可以沒有抽象方法,但包含了抽象方法的類必須被定義爲抽象方法.
  • 如果子類沒有實現父類中所有的抽象方法,子類也必須定義爲抽象類.
  • 抽象類不能被定義爲 private、final、和 static 類型. 沒有抽象的構造方法.
  • 抽象方法沒有方法體,如果一個方法沒有方法體,那麼該方法必須聲明爲抽象的方法.
  • 非抽象類繼承抽象類的時候,必須要把抽象類中的所有抽象方法實現.

3. final 修飾符

  • final 變量必須被顯式初始化,並且只能被賦值一次值
  • final 修飾基本類型變量的時候, 該變量不能重新賦值
  • final 修飾引用類型變量的時候, 該變量不能重新指向其他對象
  • final 修飾的方法爲最終的方法, 該方法不能被重寫
  • private 類型的方法都默認爲是final方法,因而也不能被子類重寫
  • final 修飾的類爲最終的類, 不能被繼承

4. static修飾符

  • 如果聲明瞭靜態方法或變量,值是放在方法區,因爲方法區是一個數據共享區;所以不管什麼變量訪問它,都是同一份.
  • 在靜態方法中不能直接訪問實例方法和實例變量.
  • 在靜態方法中不能使用 this 和 super 關鍵字.
  • 靜態方法不能被 abstract 修飾.
  • 靜態的成員變量可以使用類名或者是對象進行訪問,非靜態成員變量只能使用對象進行訪問.
  • 靜態函數可以直接訪問靜態的成員,但是不能夠直接訪問非靜態成員.,非靜態函數可以訪問靜態和非靜態成員.
  • 當類被加載時,靜態代碼塊只能被執行一次。類中不同的靜態方法代碼塊按他們在類中出現的順序被依次執行.
  • 當多個修飾符連用時,修飾符的順序可以顛倒,不過作爲普遍遵守的編碼規範,通常把訪問控制修飾符放在首位,其次是 static 或abstact 修飾符,接着就是其他的修飾符

注意:以下修飾符一起用是無意義的,會導致編譯錯誤:
abstract 與 private
abstract 與 final
abstract 與 static

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章