当前位置: 首页 > news >正文

java 局部内部类

java 局部内部类

  • 一、位置
  • 二、特点
  • 三、局部内部类的实例化
  • 四、代码实例一:演示特点一
  • 五、代码实例二:演示特点二和特点三
  • 六、代码实例三:演示局部内部类的实例化

同步文章(更好的排版):
java 局部内部类

一、位置

定义在外部类的方法中。局部内部类的作用范围仅限此方法中

二、特点

  1. 局部内部类不能使用任何访问修饰符
  2. 如果局部内部类所在方法是非静态方法,则此局部内部类可以直接访问外部类的属性和方法
  3. 如果局部内部类所在方法是静态方法,则此局部内部类就只能直接访问外部类的静态属性和方法
  4. 局部内部类可以直接访问局部变量,局部变量必须使用 final 修饰,jdk1.8 之后,final 关键字可以省略,对象的生命周期长于局部变量
  5. 局部内部类不能声明静态成员,但可以使用静态常量

三、局部内部类的实例化

局部内部类的实例化,需要在对应的方法中进行

四、代码实例一:演示特点一

public class JuBuOuter {

    //外部类的成员方法
    public void show(){
        //局部内部类
        //局部内部类不能使用任何访问修饰符
        class Inner{}
        public class Inner{}
        protected class Inner{}
        private class Inner{}
    }
}

五、代码实例二:演示特点二和特点三

public class JuBuOuter02 {
    //外部类的非静态成员属性
    private String name = "公众号:牧牧川";

    //外部类的静态成员属性
    private static int age = 18;


    //外部类的非静态成员方法
    public void t1(){
        //局部内部类
        class Inner01{
            //局部内部类的方法
            //如果局部内部类所在方法是非静态方法,则此局部内部类可以直接访问外部类的属性和方法
            public void show(){
                System.out.println("我是非静态成员方法中的内部类");
                System.out.println(name);
                System.out.println(age);
            }
        }
    }


    //外部类的静态成员方法
    public static void t2(){
        //局部内部类
        class Inner02{
            //局部内部类的方法
            //如果局部内部类所在方法是静态方法,则此局部内部类就只能直接访问外部类的静态属性和方法
            public void show(){
                System.out.println("我是静态成员方法中的内部类");
//                System.out.println(name);
                System.out.println(age);
            }
        }
    }
}

六、代码实例三:演示局部内部类的实例化

public class JuBuOuter02 {
    //外部类的非静态成员属性
    private String name = "公众号:牧牧川";

    //外部类的静态成员属性
    private static int age = 18;


    //外部类的非静态成员方法
    public void t1(){
        //局部内部类
        class Inner01{
            //局部内部类的方法
            //如果局部内部类所在方法是非静态方法,则此局部内部类可以直接访问外部类的属性和方法
            public void show(){
                System.out.println("-----我是非静态成员方法中的局部内部类-----");
                System.out.println(name);
                System.out.println(age);
            }
        }

        //局部内部类的实例化,需要在对应方法中进行
        Inner01 inner01 = new Inner01();
        inner01.show();
    }


    //外部类的静态成员方法
    public static void t2(){
        //局部内部类
        class Inner02{
            //局部内部类的方法
            //如果局部内部类所在方法是静态方法,则此局部内部类就只能直接访问外部类的静态属性和方法
            public void show(){
                System.out.println("-----我是静态成员方法中的局部内部类----");
//                System.out.println(name);
                System.out.println(age);
            }
        }

        //局部内部类的实例化,需要在对应方法中进行
        Inner02 inner02 = new Inner02();
        inner02.show();

    }

}

public class TestJuBuOuter02 {
    public static void main(String[] args) {
        //创建外部类对象
        JuBuOuter02 juBuOuter02 = new JuBuOuter02();
        //通过外部类对应的方法,调用对应的局部类
        juBuOuter02.t1();
        juBuOuter02.t2();
    }
}

http://www.dtcms.com/a/112215.html

相关文章:

  • Git 教程:从 0 到 1 全面指南 教程【全文三万字保姆级详细讲解】
  • DPDI版本升级说明
  • AI提示词:分享卡片生成器
  • 浅析 Spring AI 与 Python:企业级 AI 开发的技术分野
  • 在Git中如何处理冲突?
  • 目前主流OCR/语义理解/ASR
  • 使用mcp自定义编写mcp tool,使用 conda 启动,在cline中配置使用
  • MOM成功实施分享(八)汽车活塞生产制造MOM建设方案(第一部分)
  • fastGPT—前端开发获取api密钥调用机器人对话接口(HTML实现)
  • GIt 分布式版本控制系统
  • ND4J的MemoryWorkspace
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • 【FPGA基础学习】状态机思想实现流水灯
  • 推理模型与普通大模型如何选择?
  • vue组件开发:什么是VUE组件?
  • Redis核心机制-缓存、分布式锁
  • selectdb修改表副本
  • leetcode51-N皇后
  • SpringBoot异步任务实践指南:提升系统性能的利器
  • 《P1029 [NOIP 2001 普及组] 最大公约数和最小公倍数问题》
  • 数据集(Dataset)和数据加载器(DataLoader)-pytroch学习3
  • MySQL 索引原理
  • Koordinator-NodeInfoCollector
  • 微服务架构: SpringCloud服务注册与发现详解
  • P17_ResNeXt-50
  • Apache Struts2 漏洞(CVE-2017-5638)技术分析
  • 七、重学C++—静态多态(编译期)
  • Web Service技术
  • MySQL vs MSSQL 对比
  • AI——使用numpy