前言——任何一個(gè)類(lèi)都不在另一個(gè)類(lèi)的內(nèi)部,而在類(lèi)中定義的那個(gè)類(lèi)稱(chēng)為內(nèi)部類(lèi)。
一、內(nèi)部類(lèi)包括:成員內(nèi)部類(lèi)、局部?jī)?nèi)部類(lèi)、匿名內(nèi)部類(lèi)、靜態(tài)內(nèi)部類(lèi)、內(nèi)部類(lèi)的繼承。
1.成員內(nèi)部類(lèi):
概念:① 內(nèi)部類(lèi)可以隨便使用外部類(lèi)的成員方法、成員變量 ,無(wú)論是否被修飾為private。
② 內(nèi)部類(lèi)的實(shí)例一定要綁定在外部類(lèi)的實(shí)例上。
③內(nèi)部類(lèi)的成員,只有在內(nèi)部類(lèi) 的范圍可知,不能被外部類(lèi)使用。
2.局部?jī)?nèi)部類(lèi):
內(nèi)部了不僅可以在類(lèi)中進(jìn)行,也可以在類(lèi)的局部位置定義:如在類(lèi)的方法,或者任意的作用域中。
用this調(diào)用關(guān)鍵字獲取內(nèi)部類(lèi)與外部類(lèi)的引用。
3.匿名內(nèi)部類(lèi):
語(yǔ)法實(shí)現(xiàn):return new A ( ) { .../內(nèi)部類(lèi)體};分號(hào)代表創(chuàng)建方法引用表達(dá)式的標(biāo)識(shí)。
匿名內(nèi)部類(lèi)沒(méi)有名稱(chēng),一般在方法體中出現(xiàn)。
4.靜態(tài)內(nèi)部類(lèi):
內(nèi)部類(lèi)前加上static ,一個(gè)靜態(tài)內(nèi)部類(lèi)中可以聲明static成員,但是在非靜態(tài)內(nèi)部類(lèi)中不可以聲明靜態(tài)成員。不可以使用外部類(lèi)的非靜態(tài)成員。
5.內(nèi)部類(lèi)的繼承:
public class OutClass extends ClassA,ClassB{
public OutClass ( ClassA a ){ ? a.super( );}}
class ClassA {
class ClassB { }}