
java中,剩下的这两个内部类不太好理解!
定义方式:方法内部类的定义方式与成员内部类类似,但没有修饰符。 访问范围:方法内部类的访问范围与该方法的访问级别一致。例如,若方法是 使用场景:方法内部类通常用于在特定方法中封装特定的逻辑,但这种做法较少使用。
定义方式:匿名内部类没有名字,直接在 实现接口或继承类:匿名内部类必须实现一个接口或继承一个类。 局限性:匿名内部类只能使用一次,不能作为外部类的成员。 使用场景:匿名内部类通常用于简化代码,例如在
发布日期:2021-05-14 12:59:38
浏览次数:40
分类:精选文章
本文共 1655 字,大约阅读时间需要 5 分钟。
Java 内部类详解:方法内部类与匿名内部类
导语
Java 的内部类分为四种:静态内部类、成员内部类、方法内部类和匿名内部类。前两种(静态内部类和成员内部类)我们在上一篇文章中已经详细讲解。今天我们将重点分析后两种内部类:方法内部类和匿名内部类。
方法内部类
定义与特点
方法内部类是指在一个方法内部定义的一个类。从语法上看,方法内部类没有修饰符(如 public
、private
等),只能通过其所属方法的访问范围来使用。
代码示例
public class People { private String name; public People show() { // 方法内部类 class Man extends People { public void getMan() { System.out.println("名称是:" + name); System.out.println("执行内部类的方法"); } } // 创建内部类的对象 Man man = new Man(); // 调用内部类的方法 man.getMan(); return new Man(); }}
代码分析
public
,则内部类可以在类的外部访问;若方法是 private
,则内部类只能在类的内部使用。注意事项
- 方法内部类不能带有
public
、private
、static
等修饰符。 - 方法内部类的生命周期与其所属方法的生命周期一致。
匿名内部类
定义与特点
匿名内部类是没有名字的内部类,通常用于在 new
表达式后面直接跟在父类或接口类型上,用于快速创建一个只需一次使用的对象。
代码示例
public class Man { public static void show() { // 匿名内部类 People p = new People() { @Override public void eat() { System.out.println("正在吃饭……"); } }; // 调用匿名内部类的方法 p.eat(); } public static void main(String[] args) { Man man = new Man(); man.show(); }}
代码分析
new
后面紧跟接口或类名称。Comparator
接口中快速实现一个比较逻辑。示例解析
在上述代码中,匿名内部类 People
实现了 eat()
方法,能够输出“正在吃饭……”。匿名内部类的生命周期与其引用变量 p
一致,一旦 p
被回收,匿名内部类也会被回收。
总结
- 方法内部类:在方法内部定义一个类,通常用于封装特定逻辑,但不常用。
- 匿名内部类:没有名字的内部类,用于快速创建只需一次使用的对象,适合简化代码。
下期内容
关注【雄雄的小课堂】,获取更多高质量的技术内容!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月25日 06时32分48秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
vcenter访问报503错误处理
2019-03-12
项目计划甘特图绘制说明
2019-03-12
1004.串口收发数据集成bug
2019-03-12
09.QT应用程序启动外部exe文件
2019-03-12
1009. clion调试段错误
2019-03-12
C/C++:线性表之顺序表
2019-03-12
嵌入式系统试题库(CSU)
2019-03-12
图神经网络7日打卡营学习心得
2019-03-12
electronJS 开发linux App
2019-03-12
MbedOS 设备中的模数转换(ADC)
2019-03-12
MbedOS+MQTT+TICK 栈构建企业大数据平台
2019-03-12
C++ influxdb 客户端
2019-03-12
【vue】setInterval的嵌套实例
2019-03-12
【SpringBoot】如何配置热部署
2019-03-12
【rabbitMQ】04 如何实现高可用?
2019-03-12
【自考】之信息资源管理(一)
2019-03-12
C# 文本框限制大全
2019-03-12
setup facatory9.0打包详细教程(含静默安装和卸载)
2019-03-12
ionic4 路由跳转传值
2019-03-12