2010-07-12 18 views
4

我是Android開發中的新魚。在閱讀書籍和Android源代碼時,我發現Android應用程序中有許多內部類。爲什麼Android需要這麼多內部類?爲什麼Android中有這麼多的內部類?

我對這些內部類感到困惑。

+0

在android – 2010-07-12 05:31:54

+7

上提供了「內部類」的意思的完整描述我對你的困惑感到困惑。 – Qberticus 2010-07-12 06:07:03

回答

7

它們通常是實現設計的最有效方式。

內部類可以訪問包含它的類的私有成員,因此使用內部類允許在類之間進行功能拆分,而無需爲私有變量添加訪問器方法。

+3

不過,最好讓這些成員封裝而不是私有,以避免在引擎蓋下生成額外的訪問器方法。 – yanchenko 2010-07-13 07:02:27

2

我猜你以前一直在做C/C++。這些內部類不是特定於Android的。他們來自Java。在Java中,堆棧(在我們生活的C/C++中)不以相同的方式存在。把Java字節碼想象成一個二進制可執行文件存在於一個函數內(有點像在C/C++的主函數中寫入所有代碼)。但是Java可以讓你成爲「面向對象」,並將你的代碼本地化爲不同任務的類。它還允許您從另一個類派生並同時實例化它。這就是你在所有例子中看到的。 「Macarse」提供的鏈接爲Java程序員解釋了這一點。

3

簡單地說,當翻譯成字節碼時,內部類在相同包中作爲外部類「重建」爲 。這意味着 包中的任何類都可以訪問此內部類。所有者/封閉/父親 類的私有字段被變形爲受保護的字段,因爲它們是現在外部的內部類可以訪問的 。

OWASP Recommendation

因此,基本上,它只是一個「快捷方式」是有損自己的設計的安全性。

所以,在這個意義上,Android沒有「需要」。

相關問題