1. 外部其他类不能访问局部内部类(因为局部内部类地位就是一个局部变量)
    2. 如果外部类和局部内部类的成员重名时,默认遵循就近原则,如果想访问外部类的成员,则可以使用(外部类名.this.成员)去访问。 ```java package test; /**
      • 演示局部内部类的使用 */ public class Main {//外部其他类 public static void main(String[] args) { Outer outer = new Outer(); outer.m1(); System.out.println(“outer的hashcode=” + outer); //6. 外部其他类不能访问局部内部类(因为局部内部类地位就是一个局部变量) //Inner inner = new Inner();//报错!!!
    1. }

    } class Outer {//外部类 private int n1 = 100;//私有属性 private void m2() {//私有方法 System.out.println(“Outer m2()”); } //1.局部内部类是定义在外部类的局部位置,比如方法中或者代码块中,并且含有类名。 public void m1() {//私有方法 //2.不能添加访问修饰符,但是可以使用final 修饰 final class Inner {//局部内部类(本质仍然是一个类) private int n1 = 800;//和外部类的属性重名 //4.可以直接访问外部类的所有成员,包含私有的 public void f1() { //7. 如果外部类和局部内部类的成员重名时,默认遵循就近原则, // 如果想访问外部类的成员,使用 外部类名.this.成员)去访问 // Outer.this 本质就是外部类的对象, 即哪个对象调用了m1, Oute.this就是哪个对象 System.out.println(“n1=” + n1 + “ 外部类的n1=” + Outer.this.n1); System.out.println(“Outer.this hashcode=” + Outer.this); m2(); } } //当Inner没有final修饰时,可以继承 // class Inner02 extends Inner{ // }

    1. //5. 外部类可以访问局部类的成员,访问方式:创建对象再访问(注意:必须在作用域内)。
    2. Inner inner = new Inner();
    3. inner.f1();
    4. }
    5. //3. 作用域:仅仅在它定义的方法或代码块中。
    6. {//代码块
    7. class Inner03{
    8. }
    9. }

    } ```

    image.png