Java内部类之局部内部类(附详细代码示例)

    /**
     * 局部内部类的定义和特性:
     * 1、在某个方法中定义;
     * 2、作用域仅限于方法内部,所以不能使用修饰符修饰(public、private、protected、static),因为没意义
     * 3、无法创造静态信息,因为方法结束之后内存要释放!;
     * 4、可以访问所在类的所有变量信息(可以修改,除非是final);
     * 5、可以访问所在方法的所有变量信息(但是不能修改,会报错);
     * 6、方法中不能访问局部内部类的信息;
     * 7、由于作用域有限,所以很少使用局部内部类;
     */

 

 1 public class LocationInner {
 2     private String outClassVar = "hello我是外部类的变量";
 3 
 4     // 定义一个外部类的方法
 5     public void outMethod() {
 6         final String inMethodVar = "hello我是方法中的局部变量"; // 定义局部变量
 7         
 8         // 定义内部父类
 9         class InnerBase {
10             String baseVar = "内部父类InnerBase的变量";
11         }
12 
13         // 定义内部子类
14         class SubClass extends InnerBase { // 在方法中定义内部类
15             public String subVar = "内部子类SubClass的变量";
16 
17             public void printInfo() {
18                 System.out.println("内部子类方法访问所在方法的所在类的信息:" + outClassVar);
19                 System.out.println("内部子类方法访问所在方法的局部变量:" + inMethodVar);
20                 System.out.println("内部子类方法访问父类的变量:" + baseVar);
21                 System.out.println("内部子类方法访问自己的变量:" + subVar);
22                 outClassVar = "新值"; // 允许修改所在外部类的变量。
23                 // inMethodVar = "新值"; //会报错,不可以修改所在方法的局部变量
24             }
25         }
26 
27         //subVar = "新值"; //会报错,方法中不能访问局部内部类的信息
28         // 通过内部类对象来访问内部类的成员
29         SubClass inner = new SubClass();
30         System.out.println("方法中访问内部类变量:" + inner.baseVar);
31         System.out.println("方法中访问内部类变量:" + inner.subVar);
32         inner.printInfo();
33 
34     }
35 }

 

编写一个测试类:

1 public class Test {
2     public static void main(String[] args) {
3         LocationInner out = new LocationInner();
4         out.outMethod();
5     }
6 }

输出结果:

请各路大神多多评论,欢迎指点!

posted @ 2019-10-17 17:02  Viking_牧马人  阅读(309)  评论(0)    收藏  举报