【JavaSE】局部内部类
  TEZNKK3IfmPf 2023年11月12日 22 0
局部内部类的使用
  • 说明:局部内部类是定义在外部类的局部位置,比如方法中,并且有类名
  1. 可以直接访问外部类的所有成员,包含私有的。
  2. 不能添加访问修饰符,因为它的地位就是一个局部变量。局部变量是不能使用修饰符的。但是可以使用final修饰,因为局部变量也可以使用final
  3. 作用域:仅仅在定义它的方法或代码块中。
  4. 局部内部类—访问---->外部类的成员【访问方式:直接访问】
  5. 外部类—访问---->局部内部类的成员
    访问方式:创建对象,再访问(注意:必须在作用域内)
    (外部类要使用局部类时,在外部类在方法中,可以创建 Inner02 实例对象,然后调用方法即可)
public class LocalInnerClass {
    public static void main(String[] args) {
        //测试
        Outer02 outer02 = new Outer02();
        outer02.m1();
    }
}

class Outer02 {//外部类
    private int n1 = 100;

    private void m2() {
        System.out.println("Outer02 m2()");
    } //私有方法

    public void m1() {//方法
        //1.局部内部类是定义在外部类的局部位置,通常在方法
        //3.不能添加修饰符,但是可以使用final 修饰
        //4.作用域:仅仅定义在它的方法或代码块中

        String name = "xdr";

        final class Inner02 { //局部内部类(本质化仍然还是一个类)
            //2. 可以直接访问外部类的所有成员,包含私有的
            public void f1() {
                //5.局部内部类可以直接访问外部类的成员,如下:访问 外部类 n1 和 m2
                System.out.println("n1" + n1);
                m2();
            }
        }

        {//代码块,局部内部类
            class Inner03 {

            }
        }

        //6. 外部类要使用局部类时,在外部类在方法中,可以创建 Inner02 实例对象,然后调用方法即可
        Inner02 inner02 = new Inner02();
        inner02.f1();

    }
}

【JavaSE】局部内部类_java

注意:
(1)局部内部类定义在方法中/代码块
(2)作用域在方法体或者代码块中
(3)本质仍然是一个类

  1. 外部其他类—不能访问----->局部内部类(因为局部内部类地位是一个局部变量)
  2. 如果外部类和局部内部类的成员重名时,默认遵循就近原则,如果想访问外部类的成员,则可以使用【外部类名.this.成员】去访问
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("Outer02 m2()");
    } //私有方法

    public void m1() {//方法
        //1.局部内部类是定义在外部类的局部位置,通常在方法
        //3.不能添加修饰符,但是可以使用final 修饰
        //4.作用域:仅仅定义在它的方法或代码块中

        String name = "xdr";



        final class Inner02 { //局部内部类(本质化仍然还是一个类)
            //2. 可以直接访问外部类的所有成员,包含私有的

            private int n1 = 200;

            public void f1() {
                //5.局部内部类可以直接访问外部类的成员,如下:访问 外部类 n1 和 m2
                System.out.println("n1=" + n1);
                m2();
                System.out.println("==================");
                //7.如果外部类和局部内部类的成员重名时,默认遵循就近原则,如果想访问外部类的成员,
                // 则可以使用【`外部类名.this.成员`】去访问
                // 解读:Outer02.this 本质就是外部类的对象,即哪个对象调用了m1,Outer02.this 就是那个对象
                System.out.println("n1=" + n1 + " 外部类的n1= " + Outer02.this.n1);
                //验证
                System.out.println("Outer02.this hashcode = " + Outer02.this);
            }
        }

        {//代码块,局部内部类
            class Inner03 {

            }
        }

        //6. 外部类要使用局部类时,在外部类在方法中,可以创建 Inner02 实例对象,然后调用方法即可
        Inner02 inner02 = new Inner02();
        inner02.f1();

    }
}

【JavaSE】局部内部类_Java局部内部类_02

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2023年11月12日   29   0   0 反射JavaSE
  TEZNKK3IfmPf   2023年11月14日   28   0   0 内部类
  TEZNKK3IfmPf   2023年11月12日   54   0   0 javaJavaSEWeb
  TEZNKK3IfmPf   2023年11月12日   42   0   0 IDEAJavaSE
  TEZNKK3IfmPf   23天前   24   0   0 JavaSE
  TEZNKK3IfmPf   2023年11月14日   18   0   0 java内部类
  TEZNKK3IfmPf   2023年11月12日   22   0   0 javaJavaSEWeb
  TEZNKK3IfmPf   2023年11月12日   79   0   0 JavaSE
  TEZNKK3IfmPf   2023年11月14日   20   0   0 java内部类
  TEZNKK3IfmPf   2023年11月12日   53   0   0 注解JavaSE
  TEZNKK3IfmPf   2023年11月12日   24   0   0 java内部类
  TEZNKK3IfmPf   2023年11月13日   21   0   0 内部类
  TEZNKK3IfmPf   2023年11月12日   40   0   0 JavaSE
  TEZNKK3IfmPf   2023年11月13日   22   0   0 内部类
TEZNKK3IfmPf