簡體   English   中英

Java內部類訪問和最佳實踐

[英]Java Inner Class Access and Best Practices

我知道內部類可以訪問外部類中的所有內容(因為它是該類的成員)但是反過來呢?

  1. 外部類是否可以訪問內部類中的私有變量和方法?

  2. 我看過文章提到內部類應該是私有的,這樣它們只能被外部類訪問。 這對內部類的可訪問性有什么影響?

  3. 在內部類中處理訪問級別的最佳實踐是什么? 我假設更多的封裝更好,但這是以犧牲可訪問性為代價的嗎?

Effective Java(第2版)第22項:“非靜態的靜態成員類”對此主題進行了詳細介紹。

簡要總結:

  1. 內部類不應該訪問外部類實例,除非需要該訪問,即默認情況下內部類應該是static的。 為了獲得技術,Effective Java調用這些靜態成員類而不是內部類 ,並使用術語嵌套類來包含靜態和非靜態版本。
  2. 外部類總是可以訪問其內部類的成員,即使這些成員是private 通過這種方式,內部類只能將自身暴露給它的外部類。
  3. “內部階級應該只為服務其外部階級而存在。”

就個人而言,我傾向於實現內部類,只要這樣做允許內部類的構造函數是private ,即當一個類只能從另一個(外部)類實例化時。 任何額外的封裝,例如使整個內部類都是private ,是可取的; public內部課程是完全可以接受的。 Java中有很多例子,比如AbstractMap.SimpleEntry

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM