局部内部类
程序示例
/*
局部内部类:
1、可以直接访问外部类的所有成员,包括私有成员
2、可以在外部类中的定义局部内部类的局部范围中创建对象,通过对象调用
内部类中的方法,来使用内部类的局部功能。
*/
class Outer6{
private int num = 10;
public void fun(){
int num2 = 100;
class Inner6{
int num3 = 200;
public void show(){
//局部内部类可以直接访问外部类的所有成员,包括私有成员
System.out.println(num);
System.out.println(num2);
System.out.println(num3);
//那么我现在能不能修改num3的值呢?//可以
num3 = 300;
//那么我想能不能修改num2的值呢?//不可以
// num2 = 400;//报错:从内部类引用的本地变量必须是最终变量或实际上的最终变量
//通过反编译工具查看后发现局部内部类存在的方法中定义的局部变量自动加上了final
//特点:jdk1.8之后会自动添加final关键字。
}
}
//在外部类中的定义局部内部类的局部范围中创建对象
Inner6 inner6 = new Inner6();
inner6.show();
}
public void fun2(){
//方法与方法之间内部访问不到局部内部类(方法与方法之间的作用域相对隔离)
// Inner6 inner6 = new Inner6();
}
}
public class InnerClassDemo6 {
public static void main(String[] args) {
//创建Outer6对象调用fun()方法
Outer6 outer6 = new Outer6();
outer6.fun();
}
}