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

java内部类

1.定义

内部类:在一个类的内部定义一个类。

例:在A类中定义B类,则B类相对A类就是内部类,A类相对B类就是外部类。

2.成员内部类

1.内部类需要通过外部类的对象来创建自己内部类的对象

2.内部类能访问外部类的私有属性和方法

package base; //外部类 public class Outer { private int id=2034; public void out(){ System.out.println("这是外部类的方法"); } //成员内部类 public class Inner{ public void in(){ System.out.println("这是内部类的方法"); } //成员内部类能访问外部类的私有属性和方法 public void getId(){ System.out.println(id); } } }
package base; public class Application { public static void main(String[] args) { Outer outer = new Outer(); outer.out(); //通过外部类的对象来创建成员内部类的对象 Outer.Inner inner = outer.new Inner(); inner.in(); inner.getId(); } }

这是外部类的方法
这是内部类的方法
2034

3.静态内部类

1.使用static修饰的内部类,属于外部类本身,而不是外部类的对象。

2.静态内部类只能访问外部类的静态变量和方法

3.通过new外部类名.内部类名的方式来创建静态内部类的对象

package base; //外部类 public class Outer { private static int id=2034; public void out(){ System.out.println("这是外部类的方法"); } //内部类 public static class Inner{ public void in(){ System.out.println("这是内部类的方法"); } //静态内部类只能访问外部类的静态变量和方法 public void getId(){ System.out.println(id); } } }
package base; public class Application { public static void main(String[] args) { //通过new外部类名.内部类名的方式来创建静态内部类的对象 Outer.Inner inner = new Outer.Inner(); inner.in(); inner.getId(); } }

这是内部类的方法
2034

4.局部内部类

1.局部内部类:定义在方法内的类,只能在定义的作用域内使用。

2. 局部内部类能访问外部类所有变量和方法,访问局部变量(方法内的变量)时,变量必须是final或effectively final,还能访问方法的参数。

package base; import org.w3c.dom.ls.LSOutput; public class Outer { private int outerVar = 10; private void outRun(){ System.out.println("这是外部类的方法"); } public void method(final int param) { int localVar = 20; //局部变量必须是final或effectively final //局部内部类 class LocalInner { private int innerVar = 30; public void display() { //访问外部类所有变量和方法 outRun(); System.out.println("outerVar=" + outerVar); //访问局部变量(方法内的变量)时,变量必须是final或effectively final System.out.println("localVar=" + localVar); //访问方法的参数 System.out.println("param=" + param); } } //局部内部类只能在定义的作用域内使用 LocalInner inner = new LocalInner(); inner.display(); } }
package base; public class Application { public static void main(String[] args) { Outer outer = new Outer(); outer.method(30); } }

这是外部类的方法
outerVar=10
localVar=20
param=30

5.匿名内部类

1.没有名字的内部类,同时定义和实例化一个类。

2.语法格式:new 类名/接口名() { 类体 }

3.不能定义构造方法(因为没有类名)

package base; public class Application { public static void main(String[] args) { //匿名内部类 new Apple() { //1:创建匿名内部类对象 @Override public void eat() { //3:执行eat()方法 System.out.println("匿名内部类:吃了一个苹果"); // 可以添加额外的方法 peel(); //4:调用peel()方法 } //定义自己的方法 private void peel() { //5:执行peel()方法 System.out.println("先削皮"); } }.eat(); //2:调用eat()方法 } } class Apple { public void eat(){ System.out.println("Apple类:吃了一个苹果"); } }

匿名内部类:吃了一个苹果
先削皮

http://www.jsqmd.com/news/504768/

相关文章:

  • 技术小白也能懂:什么是代理IP池?怎么买不踩坑?
  • Dify报错“RateLimitExceeded”却查不到源头?资深架构师拆解5层Token计费穿透追踪术(含OpenTelemetry埋点模板)
  • Base62编码实战:用C语言手把手实现短链接生成器(附完整源码)
  • 突破软件功能限制:从评估模式到全功能体验的技术路径
  • 统信UOS外接显示器黑屏?5步搞定NVIDIA驱动配置(附BusID查找技巧)
  • EagleEye DAMO-YOLO TinyNAS应用:三步实现产品质量视觉检测
  • 2026年环卫服务优质服务商推荐榜:单位环卫/四川环卫公司/四川环卫资质公司/小区环卫/市政环卫/环卫工程/环卫资质公司/选择指南 - 优质品牌商家
  • 异步电机参数解析:从铭牌数据到等效电路的公式法实践
  • 从普通人视角看“移动云盘拉新”:模式、渠道与可行性分析
  • 负荷需求响应matlab 考虑电价需求弹性系数矩阵的负荷需求响应,采用matlab进行编程
  • ROS1仿真调试:解析TF_REPEATED_DATA警告与时间戳冲突的实战指南
  • Snort入侵检测实战:5分钟为你的Web服务器配置DDoS攻击告警规则
  • Beyond Compare 5 密钥生成完整指南:两种方法快速激活软件授权
  • PX4飞控解锁失败?别慌!排查CBRK_USB_CHK等关键参数与常见传感器报错
  • FreeRTOS-任务通知-1
  • Pinia持久化插件persist深度解析:从原理到最佳实践
  • 【C++ 学习笔记】程序运行时的内存四区(操作系统通用规则)
  • MLX90614红外测温实战:基于STM32F1软件IIC的寄存器深度解析与高精度应用
  • 手把手教你用DRM和KMS在Linux下实现多屏显示(附代码示例)
  • nodejs+vue基于springboot的大学生学习资料分享信息茧房交流系统设计
  • 2026年口碑好的污泥螺杆泵品牌推荐:压滤机螺杆泵可靠供应商推荐 - 品牌宣传支持者
  • Kiro CLI 自定义 Agent 配置与使用指南
  • Power Writer客户端隐藏技巧:用PWLINK 2批量烧录不同型号芯片的实战方案
  • ChatGPT响应延迟优化实战:从请求排队到并发处理的架构演进
  • 库卡机器人零位校准全流程实操指南(附EMD使用技巧)
  • md2pptx:Markdown到PPT的智能转换创新方法 | 技术工作者效率提升指南
  • 如何快速定位Windows热键冲突?Hotkey Detective终极解决方案
  • 告别无尽的地刷地狱!AIGC联动顶级材质神器:一张图秒转次世代泥泞水坑PBR资产
  • 乐山钵钵鸡优质品牌推荐榜:乐山本地人推荐美食、乐山美食必吃、乐山美食排行榜、乐山美食推荐、乐山美食攻略、乐山美食订餐热线选择指南 - 优质品牌商家
  • 搞懂 Kubernetes Ingress Class|一篇就够,再也不迷路