局部内部类
内部类:一个类包含一个类 就是内部类 例如:人的身体和心脏 汽车车身和发动机的关系一样都是包含
分类:
1.成员内部类
2.局部内部类
3.匿名内部类
局部内部类概述
局部内部类定义:如果一个类是定义在一个方法内部的 那么这是一个局部内部类
局部内部类属性:只有当前所属的方法才能使用 出了这个方法外面就不能用了
局部内部类定义格式
修饰符 class 外部类名称{
修饰符 返回值 方法名称(参数列表){
class 局部内部类名称{
}
}
}
代码:
局部内部类:
public class Outer {//外部类
public void methodOuter(){//外部类成员变量
class Inner{//局部内部类
int num=10;//局部内部类的成员变量
public void MethodInner(){//局部内部类的成员方法
System.out.println(num);
}
}
//局部变量的属性是只有在当前所属的方法才可以使用 出了方法 就不可以用了
new Inner().MethodInner();//进行创建对象和调用方法
}
}
测试类:
public class test {
public static void main(String[] args) {
//直接创建外部类对象 并调用外部类的成员方法
new Outer().methodOuter();
}
}
运行结果:
局部内部类的final问题
局部内部类 如果希望访问所在方法的局部变量 那么这个局部变量必须是有效final的
在jdk8版本以后 只要局部变量事实不变 那么final关键字可以省略
原因:
1.new出来的对象在堆内存当中
2.局部变量是跟着方法走的 在栈内存当中
3.方法运行结束之后 立刻出栈 局部变量就会立刻消失
4.但是new出来的对象会在堆当中存在 知道垃圾回收消失
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本