6.4 内部類
概念:内部類就是定義在另一個類中的類。
好處:可以通路該類的所有資料,包括私有資料。
内部類對同個包的其他類隐藏。
一、内部類通路對象
内部類和外部類是類之間的關系,并不是每個外部類都有一個内部類的執行個體域。
内部類的對象總有一個隐式引用,指向建立它的外部類對象
隻有内部類可以是私有類,而正常類隻可以是包可見性或者是公有可見性。
二、内部類規則
可以采用outer.new Inner(...)來建立内部類
内部類聲明的所有靜态域都必須是final,而且内部類不能有static方法
編譯器會把内部類翻譯成類名為: outer$inner 的正常類
三、内部類的分類
局部内部類:
1) 局部内部類不能用public或者private聲明,它的作用域被限制在這個局部類的塊中
2) 優點:對該局部方法之外完全隐藏、不僅能通路外部類,還可以通路局部變量,不過那些局部變量必須是final。
匿名内部類:
1)匿名類不能有參數。
靜态内部類:
when:隻是為了把一個類隐藏在另一個類中,并不需要在其中引用外部類的對象。
靜态内部類除了沒有生成外部類的引用外,與其他所有内部類完全一樣。
在接口中聲明内部類自動轉為static和public