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

关于内部类的使用

内部类的概述:
把类定义在其他类的内部,这个类就叫做内部类
例如:在类A中定义类B,那么类B就叫做内部类

内部类的访问特点:
内部类可以直接访问外部类的成员,包括私有
外部类要访问内部类的成员,就必须创建对象

内部类的位置:

位置概述说明
成员位置在成员位置定义的类,就称为成员内部类
局部位置在局部位置定义的类,就称为局部内部类

代码显示说明内部类和内部类

classOuter{classInner{//成员内部类}publicvoidshow(){classInner2{//局部内部类}}}classTest{publicstaticvoidmain(String[]args){//主方法}}

成员内部类:
如何直接访问内部类的成员?
格式:外部类名 . 内部类名 对象名 = 外部类对象 . 内部类对象;
代码显示访问内部类成员

classOuter{privateintnum=10;//内部类可以直接访问外部类的成员,包括私有classInner{publicvoidshow(){System.out.println(num);}}}classInnerClassDemo{publicstaticvoidmain(String[]args){Outer.Inner oi=newOuter().newInner();//创建内部类对象oi.show();}}

内部类加入修饰符的使用

内部类加入私有化修饰符的使用
案例代码显示说明
案例:假如一个人要做心脏搭建手术,但是并不是所有医生都可以做心脏搭建手术,所以需要将搭建手术方法进行私有化,只让这方面的医生进行手术

classBody{privateclassHeart{publicvoidoperator(){System.out.println("恭喜!搭建成功!");}}publicvoidmether(intnum){//加入num的值为1的话,就可以进行手术if(num==1){Heart h=newHeart();h.operator();}else{System.out.println("很遗憾!搭建失败!");}}}classInnerClassDemo{publicstaticvoidmain(String[]args){Body b=newBody();b.mether(1);//恭喜!搭建成功!}}

内部类加入静态修饰符的使用
当内部类被静态修饰后的访问
格式:外部类名.内部类名 对象名 = new 外部类名.内部类名();
代码显示说明
方法一

classOuter{staticclassInner{publicvoidshow(){System.out.println("恭喜!访问成功!");}}}classInnerClassDemo{publicstaticvoidmain(String[]args){Outer.Inner oi=newOuter.Inner();oi.show();}}

方法二

classOuter{publicstaticclassInner{publicvoidshow(){System.out.println("恭喜!访问成功!");}}publicvoidmether(){Inner i=newInner();i.show();}}classInnerClassDemo{publicstaticvoidmain(String[]args){Outer o=newOuter();o.mether();}}

内部类访问对应外部类的变量

成员内部类访问对应外部类的变量

注意:
1.内部类和外部类没有继承关系
2.访问外部类的变量的时候,通过外部类名限定 this 对象
代码显示说明
方式一

classOuter{publicintnum=10;classInner{publicvoidshow(){System.out.println(newOuter().num);//通过创建外部类的对象进行访问}}}classInnerClassDemo{publicstaticvoidmain(String[]args){Outer.Inner oi=newOuter().newInner();//创建内部类的对象oi.show();}}

方式二

classOuter{publicintnum=10;classInner{publicvoidshow(){System.out.println(Outer.this.num);//外部类名限定this的访问对象}}}classInnerClassDemo{publicstaticvoidmain(String[]args){Outer.Inner oi=newOuter().newInner();//创建内部类对象oi.show();}}

局部内部类访问局部变量
1.可以直接访问外部类的成员
2.在局部位置可以创建内部类对象,通过对象访问内部类方法,来使用内部类功能
内部类访问局部变量的时候,该局部变量必须是final修饰
代码显示说明

classOuter{publicvoidshow(){finalintnum=10;classInner{publicvoidmether(){System.out.println(num);//只能访问用final修饰的局部变量}}Inner i=newInner();//创建内部列对象i.mether();//调用局部内部类}}classInnerClassDemo{publicstaticvoidmain(String[]args){Outer o=newOuter();o.show();}}
http://www.jsqmd.com/news/1282099/

相关文章:

  • elasticsearch插件 —— 分词 IK analyzer插件安装详解
  • AI+低代码落地复盘:跳出理论误区,拆解行业真实落地方案
  • 如何在电脑上免费玩Switch游戏:yuzu模拟器完整入门指南
  • 根据JDK深入详细学习理解JAVA线程池
  • 3D打印机小型彩屏交互方案-WT2606B模组跑UI实战
  • instanceof, isinstance,isAssignableFrom的区别
  • 靠 6 条帖子,我搞到 137 个练口语的人
  • HS2-HF Patch 技术架构与部署框架深度解析
  • 2026宁波背轴走心机厂家推荐,数控走心机厂家推荐怎么选不踩坑?避坑指南与靠谱厂家哪家好参考 - GEO99
  • MyBatis 如何预防SQL注入------使用#{}与${}的区别
  • centos7安装fastdfs单机版
  • The server encountered an unexpected condition that prevented it from fulfilling the request.
  • 【JAVA课程设计/毕业设计】基于 SpringBoot 的数字化校园社区交流与信息传播系统 高校综合型校园论坛互动服务管理平台【附源码、数据库、万字文档】
  • HarmonyOS 启动任务编排实战:依赖、并发、超时与失败兜底
  • 21.1%高增速!工业5G/TSN网关开启2026-2032年发展黄金赛道
  • 【单片机毕业设计推荐】基于 STM32 的环境温湿度与水位智能监控系统设计,基于 STM32 的加湿补水智能控制与语音报警系统设计(011604)
  • 3分钟掌握网盘直链下载助手:一键获取9大网盘真实下载地址的完整指南
  • PHP:数组的排序函数:
  • 如何在5分钟内构建完全私有的搜索引擎:SearXNG Docker终极指南
  • Nintendo Switch大气层系统:开启游戏主机无限潜能的终极解决方案
  • 2026贵阳旧银回收门店行业全景盘点:正规合规实体门店优势详解、选型避坑FAQ及靠谱服务商推荐 - U渠道
  • data_structure_1
  • pacemaker控制haproxy容器
  • Human Resource Machine 全成就通关 第38关
  • 终极指南:如何快速解决Navicat试用到期问题,实现无限免费使用
  • 餐饮CPS平台开发公司排名,多级佣金自动结算源码讲解
  • Hibernate之关联关系(一对多)
  • Web逆向实战:阿里资产法拍sign参数生成算法分析与复现
  • 2019银川网络赛 Rolling The Polygon 简单的计算几何
  • 【JAVA课程设计/毕业设计】基于SpringBoot+Vue的校园流浪动物收容救助与科普宣传系统 数字化高校流浪动物管护与帮扶服务平台【附源码、数据库、万字文档】