java中的内部类
java中的内部类
1.定义
- 内部类是一个定义在另一个类中的类
- 内部类可以把一些数据统一的隐藏起来,从而增强面向对象的封装性
2.分类
-
非静态成员式的内部类
- 非静态成员式内部类可以访问该类定义所在的作用域中的所有数据,方法,包括私有数据
- 非静态成员式内部类不能声明static成员
- 非静态成员式内部类不能在该类定义静态方法中直接使用
- 访问非静态成员式内部类:外部类名.内部类 变量 = new 外部类名().new 内部类名()
- 非静态成员式内部类可以实现多继承
-
局部内部类
- 局部内部类定义在代码块、方法体内
- 局部内部类不能使用,private,public,protected,static修饰
- 局部内部类作用域仅限于当前方法中
- 局部内部类和非静态成员式内部类一样,不能拥有静态成员
- 局部内部类访问的局部变量必须是final修饰的,java8以后会自动添加上隐藏式的final
-
匿名内部类
- 匿名局部内部类
public abstract class Person { public abstract void sleep(); }
public class Student extends Person { @Override public void sleep() { System.out.println("学生睡觉"); } }
public class Test { public static void main(String[] args) { Person p1 = new Person() { @Override public void sleep() { System.out.println("学生睡觉"); } }; p1.sleep(); Person p2 = new Student(); p2.sleep(); } }
在上面的代码中p1对象和p2对象一样,但是p1对象只能使用一次
- 匿名内部类使用前提,必须继承一个父类,或者去实现一个接口
-
静态成员式内部类
- 静态内部类,场景:如果一个类只想把另一个类隐藏起来,而不想引用外部类对象,类似于工具类
- 访问静态内部类的方法:外部类名.内部类名 = new 外部类名.内部类名()
- 静态成员式内部类创建实例对象的时候不必创建外部类对象
- 静态成员式内部类可以直接访问外部类的静态成员,不能直接访问外部类的非静态成员
- 外部类可以通过完整的类名直接访问静态内部类的静态成员
总结
内部类的出现是为了减少一个类的使用,即:如果该类只会使用一次,并且他的父类或者要实现的接口,那么就可以方便的使用内部类,这样可以让代码的结构更加紧凑
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?