局部内部类特点:
1. 定义在代码块方法体内的类叫局部内部类
2. 局部内部类访问外部类的属性和方法使用外部类名. this. 属性名和外部类名. this. 方法名 (参数) 的形式
3. 对外部世界完全隐藏, 只能在作用域内生成对象
局部内部类有以下限制:
1. 局部类不能加访问修饰符, 因为他们不是类成员
2. 成员内部类不能与外部类重名
3. 局部内部类访问作用域内的局部变量, 该局部变量需要加 final 修饰
- public class LocalInnerClass {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Outer3 outer3 = new Outer3();
- outer3.OuterShow();
- }
- }
- class Outer3{
- private int num1 = 1;
- private static int num2 = 2;
- public void OuterShow() {
- final int num4 = 4;//fianl 好像修复了, 不声明为 final 在内部类里也可以用(可以去掉 final)
- //Inner inner = new Inner(); 不能在这里实例化, 因为 Inner 类还没有初始化, 就不能调用该类
- class Inner{// 局部内部类不能加访问修饰符
- public void show() {
- int num1 = 10;
- System.out.println(num1);
- System.out.println(Outer3.this.num1);// 调用外部类的属性写法
- System.out.println(Outer3.num2);// 调用外部静态属性写法
- System.out.println(num4);
- }
- }
- Inner inner = new Inner();// 应该在这里实例化
- inner.show();
- }
- }
来源: http://www.bubuko.com/infodetail-2504336.html