局部内部类
一. 定义:在方法内定义的内部类称为局部内部类
二.特点:
- 局部内部类不能有成员的访问限制修饰符(因为它不是外部类的一部分)
- 可以访问当前代码块内的常量和此外部类的所有成员
- Java7中,局部内部类不能访问同在一个局部的普通局部变量,若要访问,变量需加final关键字修饰
但在Java8中,局部内部类访问的局部变量不必用final修饰
下面这段代码在Java8中是正确的
package LZQ;
public class OutterClass {
//int x = 100;
public void getInner(){
int x = 100; //getInner()方法中的局部变量x
class Inner{
//定义show()方法打印x 的值
public void show(){
System.out.println("getInner方法中局部变量x为:" + x);
}
}
//创建内部类对象
Inner i = new Inner();
i.show();
}
}
package LZQ;
public class Main {
public static void main(String[] args) {
//创建外部类对象
OutterClass o = new OutterClass();
//调用外部类中的getInner()方法
o.getInner();
}
}
运行结果:
三. 优点:
- 它对外面的所有类来说都是隐藏的,即使是它所属的外部类,仅有它所在的方法知道它
- 它可以访问它所属外部类中的数据