目錄
1.局部內部類的使用
總結
1.局部內部類的使用
- 說明:局部內部類是定義在外部類的局部位置,比如方法中,并且有類名
- 可以直接訪問外部類的所有成員,包含私有的
- 不能添加訪問修飾符,因為它的地位就是一個局部變量。局部變量是不能使用修飾符的。但是可以使用final修飾,因為局部變量也可以使用final
- 作用域:僅僅在定義它的方法或代碼塊中
- 局部內部類---訪問---->外部類的成員訪問方式:直接訪問
- 外部類--訪問---->局部內部類的成員訪問方式:創建對象,再訪問(注意:必須在作用域內)
總結
- 局部內部類定義在方法中/代碼塊
- 作用域在方法體或者代碼塊中
- 本質仍然是一個類
- 外部其他類---不能訪問----->局部內部類(因為 局部內部類地位是一個局部變量)
- 如果外部類和局部內部類的成員重名時,默認遵循就近原則,如果想訪問外部類的成員,則可以使用(外部類名.this.成員)去訪問
package com.logic.innerclass;/*** 演示局部內部類的的使用*/
public class LocalInnerClass {public static void main(String[] args) {Outer02 outer02 = new Outer02();outer02.m1();System.out.println("outer02 hashcode= " + outer02);}
}class Outer02 {private int n1 = 100;private void m2() {System.out.println("m2方法...");}public void m1() {final class Inner02 {//局部內部類 本質還是一個類private int n1 = 900;public void f1() {//Outer02.this 本質就是外部類對象 即哪個對象調用了m1 Outer02.this就是哪個對象System.out.println("內部n1=" + n1 + "外部n1=" + Outer02.this.n1);System.out.println("Outer02.this hashcode= " + Outer02.this);m2();}}Inner02 inner02 = new Inner02();inner02.f1();}
}