定义在方法内部
只有当前所属方法可用,出方法不可用
局部内部类想访问外部类所在方法的局部变量,这个局部变量必须是有效final的
public void method1(){
int num1=1;
//局部内部类想访问外部类所在方法的局部变量,这个局部变量必须是有效final的
//final可省略
// num1=3;
class Inner{
public void method2(){
System.out.println(num1);
}
}
}
原因:
1、new出来的变量在堆中
2、局部变量跟着方法进栈
3、运行结束随着方法出栈,立即消失
4、new一直在堆中持续存在,直到垃圾收回消失
所以就要保证局部变量消失之后也不会发生改变
匿名内部类
如果实现类或子类只需要使用一次,就可以省略掉该类的定义,改用匿名内部类
接口名称.对象名=new 接口名称(){
\\覆盖接口中所有抽象方法
}
1、解析格式:new 接口名(){}
(1)new是创建对象动作
(2)接口名称是匿名内部类需实现的那个接口
(3){...}是匿名内部类的内容
2、适用场景
(1)匿名内部类在创建对象时只能使用一次,想多次创建对象且内容一样,要么再写一个匿名,要么定义一个实现类
(2)匿名对象调用方法时,只能调用唯一一次,如果希望同一个对象,调用多次方法,那么必须给对象起名
(3)匿名内部类省略了实现类或子类
匿名对象省略了对象名称
网友评论