Java内部类

Java内部类

成员内部类, 局部内部类, 匿名内部类, 静态内部类

没有实际场景, 有些时候, 是体会不到的

内部类是个编译时的概念,一旦编译成功后,它就与 外围类 属于两个 完全不同的类(当然他们之间还是有联系的)。

对于一个名为 OuterClass 的 外围类 和一个名为 InnerClass 的 内部类,

在编译成功后,会出现这样两个class文件:OuterClass.class 和 OuterClass$InnerClass.class。

1. 成员内部类

成员内部类: 就是位于 外部类 成员位置 的类
特点: 可以使用 外部类 中所有的 成员变量 和 成员方法(包括private的)

class OuterClass {
    private int age = 20;
    
    // 成员位置
    // 在成员位置, 就叫成员内部类
    class InnerClass {
        public void show() {
            System.out.println(age);
        }
    }
}

2. 局部内部类

局部内部类: 就是定义在一个方法 或者 一个作用域 里面的类
特点: 主要是 作用域 发生了变化,只能在自身所在 方法 和 属性 中被使用

class OuterClass {
    public void method() {
        class InnerClass {
        }
    }
}

3. 匿名内部类

一个没有名字的类, 是内部类的简化写法

new 类名或者接口名() {
    重写方法();
}

4. 静态内部类

我们知道 static 是不能用来修饰类的, 但是成员内部类 可以看做是 外部类中的 一个成员,

所以可以用 static 修饰,

这种用 static 修饰的 内部类, 我们称作 静态内部类, 也称作 嵌套内部类

特点: 不能使用 外部类的 非static成员变量 和 成员方法

class OutterClass {
    int age1 = 10;
    static age2 = 20;
    
    public Outter() {        
    }
     
    static class Inner {
        public method() {
            System.out.println(age1);//错误
            System.out.println(age2);//正确
        }
    }
}

体会吧, 静态的 只能调 静态的, 统一性的观点

5. 为什么使用内部类

1, 封装性

2, 实现多继承

3, 用 匿名内部类 实现 回调功能

4, 解决继承 及 实现接口 出现 同名方法的问题

参考链接

https://www.yuque.com/ideal-20/java/rktowg

https://www.zhihu.com/question/26954130/answer/708467570

https://www.cnblogs.com/chenssy/p/3388487.html

https://www.cnblogs.com/dolphin0520/p/3811445.html

https://www.bilibili.com/video/BV1Kb411W75N?p=361

posted on   beyondx  阅读(407)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示