1.基本介紹
一個類的內(nèi)部有完整的嵌套了另一個類归薛。被嵌套的類稱為內(nèi)部類(inner class),嵌套其他類的類稱為外部類(outer class)。 是我們類的五大成員(屬性、方法政冻、代碼塊、構(gòu)造器线欲、內(nèi)部類)明场,內(nèi)部類的最大特點就是可以直接訪問私有屬性,并且可以體現(xiàn)類與類的包含關(guān)系李丰。
2.內(nèi)部類的分類
- 定義在外部類局部位置上(方法苦锨、代碼塊):
a) 局部內(nèi)部類(有類名)
b) 匿名內(nèi)部類(沒有類名,重點)- 定義在外部類的成員位置上:
a) 成員內(nèi)部類(沒有static修飾)
b) 靜態(tài)內(nèi)部類(使用static修飾)
3.局部內(nèi)部類的使用
public class Outer01 { // 外部類
private int n1 = 100;
private void m2() {
System.out.println("Outer01 m2()");
}
public void m1() {
//1.局部內(nèi)部類通常是定義在外部類的局部位置趴泌,通常在方法中
//3.不能添加訪問修飾符舟舒,但是可以使用final修飾
//4.作用域: 僅僅在定義它的方法或代碼塊中
final class Inner01 { // 局部內(nèi)部類
private int n1 = 800;
//2.可以直接訪問外部類的成員,包含私有
public void f1() {
//5.局部類可以直接訪問外部類的成員嗜憔,比如: 下面的n1, m2()
//7.如果外部類和內(nèi)部類的成員重名時秃励,默認遵循就近原則,如果想使用外部類的成員吉捶,使用(外部類名.this.成員)去訪問
// Outer01.this 本質(zhì)就是外部類對象夺鲜,即那個對象調(diào)用了m1,Outer01.this就是那個對象
System.out.println("n1=" + n1 + " 外部類n1=" + Outer01.this.n1);
m2();
}
}
//6.外部類在方法中, 可以創(chuàng)建Outer01對象, 然后調(diào)用方法即可
Inner01 inner01 = new Inner01();
inner01.f1();
}
}
4.局部匿名類的使用