Java内部类

1.局部内部类:在方法中定义的内部类被称为局部内部类。局部内部类可以直接访问外部类的所有成员;不能使用访问修饰符和static修饰符;可以使用final修饰。作用域在方法体或者代码块中。如果外部类和局部内部类的成员重名时,默认就近原则,要访问外部类的成员可以使用外部类.this.成员;

public static void main(String[] args) {
    class Aa {
        int a;
    }
    class A extends Aa {
        int b;
    }
    A a1 = new A();
    a1.a = 1;
    a1.b = 2;
    System.out.println(a1.a);
    System.out.println(a1.b);
}

外部类和局部内部类的成员重名时:

public static void main(String[] args) {
        A a3=new A();
        a3.b();
    }
}

class A {//外部类
    private int x = 10;

    private void a() {
        System.out.println("a()");
    }

    public void b() {
        class A1 {//局部内部类
            private int x = 20;

            public void a1() {
                System.out.println("x=" + x + " 外部类的x=" + A.this.x);
                a();
            }
        }
        A1 a2 = new A1();
        a2.a1();
    }
}

2.内部类标识符:每个类都会产生一个.class文件包含它们的Class对象信息,内部类也会生成一个.class文件。类文件的命名规则:外部类的名字,加上"$",在加上内部类的名字。如果内部类是匿名的,编译器就会产生一个数字作为其标识符;如果内部类嵌套在别的内部类中,直接将它们的名字加在其外部类标识符与"$"的后面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值