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文件。类文件的命名规则:外部类的名字,加上"$",在加上内部类的名字。如果内部类是匿名的,编译器就会产生一个数字作为其标识符;如果内部类嵌套在别的内部类中,直接将它们的名字加在其外部类标识符与"$"的后面。
8万+

被折叠的 条评论
为什么被折叠?



