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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律