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 }
输出结果:

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

浙公网安备 33010602011771号