26.Java-局部内部类

局部内部类

在方法中定义的内部类,其可见范围的当前方法和++局部变量是同一级别。++

  1. 不能使用public、private、protected、static修饰符

  2. 局部内部类只能在当前方法中使用

  3. 局部内部类和实例内部类一样,不能包含静态成员

  4. 局部内部类和实例内部类一样,可以访问外部类的所有成员

  5. ++==局部内部类访问的局部变量必须使用final修饰,在java中是自动隐式加上final,但是依然是常量,不能改变==++

    原因:如果当前方法不是main方法,那么当前方法调用完毕之后,当前方法的栈被销毁,然后局部内部类是定义在方法中的,而且方法中会创建局部内部类的对象,而局部内部类会去访问局部变量,当当前方法被销毁的时候,对象还在堆内存,依然持有对局部变量的引用,但是方法被销毁的时候局部变量已经被销毁,++此时会出现,在堆中,一个对象引用着一个不存在的数据,为了避免该问题,我们使用final修饰局部变量,从而变成常量,永驻内存空间,即使方法销毁之后,该局部变量也在内存中,对象可以继续持有!++

示例代码
class LocalInnerClassDemo
{
    static String name = "XXX";
    public static void main(String[] args)
    {
        System.out.println("Hello World");
        final int age = 17;//局部变量
        
        //局部内部类
        class Inner
        {
            String info = "INFO";
            
            public void test()
            {
                System.out.println(name);//可以访问局部变量 
                System.out.println(info);
                System.out.println(age);//局部内部类访问局部变量
            }
        }
        
        new Inner().test();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,718评论 18 399
  • 整理来自互联网 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具...
    Ncompass阅读 5,454评论 0 6
  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 9,868评论 1 44
  • 一:java概述: 1,JDK:Java Development Kit,java的开发和运行环境,java的开发...
    慕容小伟阅读 5,845评论 0 10
  • 查理一世被推上了断头台,刽子手手起刀落,国王的头颅被斩下。伴随着血管断裂而溅射出的鲜血引起了人群的骚动。有人涌向断...
    大乐杨杨杨阅读 5,450评论 0 1

友情链接更多精彩内容