局部内部类的fina问题、匿名内部类
局部内部类的fina问题
/*
* 注意点:局部内部类,如果希望访问在方法的局部变量,那么这个局部变量必须是有(有效final的)
* */
public void MethodOuter(){
final int num =10; //所在方法的局部变量
class Myinner{ // 内不类
public void methodInner(){ //内部方法
System.out.println(num);
}
}
}
}
这里有一个注意点:
注意点:局部内部类,如果希望访问在方法的局部变量,那么这个局部变量必须是有(有效final的)
备注:在java8以上 在我们写局部变量只要不变,是可以省略final的
原因:
- new 出来的对象都是在堆当中的
- 局部变量是跟着方法走的是在栈内存中的
- 方法结束后会立即退出 局部变量就会消失
- 但是new 出来的对象会在堆处持续出现,直到立即回收
匿名内部类
我们先来使用正常的方式来实现一下
我们来定义一个接口
public interface Anonymous {
public void aa();
}
接口中定义一个方法
然后我们在来写一个实现类
package Anonymous;
public class Anonymousimpl implements Anonymous {
@Override
public void aa() {
System.out.println("实现了接口中的方法");
}
}
来实现这个接口
在来创建一个测试类
public class Test {
public static void main(String[] args) {
Anonymousimpl anonymousimpl = new Anonymousimpl();
anonymousimpl.aa();
}
}
创建出实现接口中的类 来调用方法
然后我们在来看一下匿名内部类
//使用匿名内部类
Anonymous pbj = new Anonymous() {
@Override
public void aa() {
System.out.println("使用匿名内部类实现了接口");
}
};
pbj.aa();
}
}
如果我们要调用一次接口的情况下的话 ,我们可以使用匿名内部类
这样我们就不用在创建一个实现接口的类了
我们来看一下运行结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY