java中的存取修飾詞

來源:互聯網
上載者:User

標籤:

  對Java中的修飾符一直記不住,現在結合網上的一些資料進行總結,並重點說明一下protected修飾符。

一. Java中的存取修飾詞

  Java物件導向的基本思想之一是封裝細節並且公開介面。Java語言採用存取控制修飾符來控制類及類的方法和變數的存取權限,從而向使用者暴露介面,但隱藏實現細節。存取控制分為四種層級:

  (1)public: 用public修飾的類、類屬變數及方法,包內及包外的任何類(包括子類和普通類)均可以訪問;

  (2)protected: 用protected修飾的類、類屬變數及方法,包內的任何類及包外那些繼承了該類的子類才能訪問(此處稍後解釋),protected重點突出繼承;

  (3)default: 如果一個類、類屬變數及方法沒有用任何修飾符(即沒有用public、protected及private中任何一種修飾),則其存取權限為default(預設存取權限)。默

       認訪問許可權的類、類屬變數及方法,包內的任何類(包括繼承了此類的子類)都可以訪問它,而對於包外的任何類都不能訪問它(包括包外繼承了此類的子類)。default

     重點突出包

  (4)private: 用private修飾的類、類屬變數及方法,只有本類可以訪問,而包內包外的任何類均不能訪問它。 

  網上一些資料及一些書上用表格對java存取修飾詞做了清楚的總結,如下表所示: 

存取層級

存取控制修飾符

同類

同包

子類

不同的包

公開

public

受保護

protected

--

預設

沒有存取控制修飾符

--

--

私人

private

--

--

--

  本人以為該表有些問題交代不清楚,如存取修飾詞protected中,不同的包不可以訪問,而子類可以訪問,那試問位於不同包中的子類是能訪問還是不能訪問呢?因此本人在自

己理解的基礎上,為了自己理解方便,容易記憶,重新整理了一個表格如下: 

存取層級

存取控制修飾符

同類

同包不同類(不含子類)

同包子類

不同包不同類

(不含子類)

不同包子類

公開

public

受保護

protected

--

√(注意)

預設

沒有存取控制修飾符

--

--

私人

private

---

---

--

--

  重要總結:通過上面的分析,我們可以看到:

   1. public、private和protected對我們來說沒有任何異議。

   2. 頂層類只能用public存取修飾詞和default(預設)存取修飾詞修飾,其中用預設修飾符修飾的類(及沒有任何修飾符的類,如class B{})不能被其他包中的類繼承,這也說明了default(預設)存取修飾詞突出的是包許可權

   3. protected:本人做了一次實驗,發現在不同包的子類中,new一個父類對象,並用該父類對象去訪問父類中的用protected修飾的類屬變數和方法時不能訪問,而new一個子類對象時,子類對象可以訪問(說明protected修飾的類可以被其他包中的類繼承)。也可以在子類重寫父類的方法中使用super關鍵字調用。這豈不是和上面表格中的總結(紅色對勾)衝突了?本人也是百思不得其解。最後在網上找到了一個相對比較認可的解釋,如下:    

  protected修飾符的修飾的成員變數和方法也稱為受保護的成員變數和方法, 受保護的成員變數和方法可以在本類或同一個包中的其它類(包括子類)中通過類的執行個體進行訪問,也可以被同一個包中的類或不同包中的類繼承,但是不能在不同包中的其它類(包括子類)中通過類的執行個體進行訪問。

   4. 如果一個類使用public修飾,那該類的類名必須與他所在的源檔案名稱相同。一個.java源檔案中有且只有一個public類,頂層類只能用public和預設修飾符(即無修飾符)修飾;

  5. final修飾的類不能被繼承,沒有子類。

  6. abstract修飾的類不能被執行個體化,必須被子類繼承。類只要有一個抽象方法就必定是抽象類別,但抽象類別不一定要有抽象方法。

java中的存取修飾詞

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.