外部如何创建对象: 外部类名.内部类名 对象名 = 外部类对象.内部类对象; 例如:Outer.Inner oi = new Outer().new Inner();
局部位置(局部内部类)
3 成员内部类
用法 一般内部类就是不让外界直接访问的
成员内部类的常见修饰符
private 为了保证数据的安全性
public static 为了让数据访问更方便(此处 类 可以用static修饰的原因是内部类也是外部类的一个成员)
被static修饰的成员内部类只能访问外部类的静态成员
内部类被静态修饰后,其类中的方法可以为:
静态方法
非静态方法
4 局部内部类
可以直接访问外部类的成员
在同样的局部位置,可以创建内部类对象,通过对象调用内部类的方法,来使用局部内部类的功能
局部内部类访问 本地局部变量的注意事项:
必须被final修饰 原因: 在如下代码中: int n = 100;n在栈内存中 class Inner{…}在堆内存中 一旦public void method() 运行完毕,栈内存中的n消失,堆内存中的class Inner{…}还没有消失, 所以System.out.println(n);这句话就有问题,就会报错
class Outer {
publicvoidmethod() {
final int n = 100;
class Inner {
publicvoidshow() {
System.out.println(n);
}
}
Inner i = new Inner();
i.show();
}
}