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();}
}