【Java学习】内部类

面向对象系列六

一、类级别

1.静态成员

2.非静态成员与方法

二、类的创建与成员管理

1.类的创建

2.类的成员管理

三、常见的内部类

1.非静态内部类

2.静态内部类

3.匿名内部类

4.局部内部类


一、类级别

1.1静态成员

静态成员 是类级别*的是能一路直属都是在类层面的,所在的区域一定是在最外层类变量空间中一层一层往里的,且它们的生命周期与最外层类共存,最外层类一加载它们也一层层往里加载好的,一路与类共存与最外层类共存*


1.2非静态成员与方法

非静态成员(模具变量)、所有方法都是属于所在类的类变量的类层面但不一定一路直贯到顶层类(如果一路贯到顶层类的模具、方法,也是属于类级别)

非静态成员、非静态 方法都是设计于似复刻变量即实例对象使用的:

  • 非静态成员是属于当前类变量下的但作为模具不能直接使用的,需要对当前类创似复刻变量创非静态成员的复制变量
  • 非静态方法需要创出有当前似复刻变量对象的引用去访问调用使用上非静态方法

二、类的创建与成员管理

2.1类的创建

类变量创建、似复刻变量new出时可在刚创建出来的它们后面加{}增创也成为其变量的空间由其管理的


2.2类的成员管理

{}里成员的静态与非静态 也是其变量管理它{}里面成员的一种方式

  • 普通类即顶层类 它不作成员被管理的++没有静态与非静态之分++
  • 内部类是在类内部定义的类,都是定义在顶层类{}里的类,内部类都是其所在外部类中的一个成员,都是作为一个变量即类变量,是有静态与非静态被管理的,静态的外部类类变量可对此类成员直接访问,非静态的需要实例外部类类变量创外部类的似复刻变量复制有它对复制的它访问

一个类本身{}里面就可以创有静态与非静态去管理此类{}里的内容

在此类本身上给它修饰静态与非静态后的是说明该类本身又是作为一个成员被上层类变量管理下的

一个类被上层类静态与非静态管理后,它类本身{}里面的静态与非静态内容就要加上对将来被上层类管理使用场景负责的,但其实静态与非静态修饰类并不会直接影响在类里面定义静态与非静态内容*,因为静态与非静态都是对于外部类管理它里面成员而言的,只是内部类成员要多上对将来使用场景负责,其实不管是被静态还是被非静态修饰,对于类本身而言没有影响的,在它们里面的非静态方法自然都有此类变量引用的隐藏形参,不是说被static修饰后的类就不能对它创似复刻变量了,一样是可以的*


三、常见的内部类

3.1非静态内部类

非静态内部类是其所在的外部类中的一个正常非静态****成员,是外部类的一个成员变量,非静态的成员变量,同样是作为模具给按此所在的外部类类变量创似复刻变量时的模具变量给用来创复制变量的,对着模具创好能用来用的复制变量在似复刻变量里面属于对象里在堆区的 ,它非静态类{}里创的类变量的内容在模具被创好成复制变量拿来用时类变量本身是实例复制在似复刻变量里在堆区的,这个非静态类成员类变量被作模板在复制变量里创,类变量里的内容都会在堆区给使用的,它类变量里的成员不能是静态的,因为使用时它们都是在堆上的都不在类级别空间上的(但未使用未复制时非静态内部类本身是模具在类级别空间上)但允许static final修饰的常量

  • 非静态内部类{}里不能有静态、允许static final常量

3.2静态内部类

静态内部类是所在外部类的一个静态成员 ,它与非静态内部类成员作为模具一样,都是直属最外层类级别的 ,对它作为内部类成员,去使用时不用创外部类的似复刻变量复制拿到它才可用的,它是直接可以用外部类变量直接拿到的 ,直属类级别(非静态内部类作为模具不能直接使用,需要对外部类创似复刻变量创它的复制变量后才可拿到使用)不需要复制实例化它的,直接通过类级别即可使用,它里面成员的静态与非静态都无使用场景限制,正常有它的静态与非静态成员与方法

  • 静态内部类{}里正常有它的静态与非静态成员与方法

3.3匿名内部类

匿名内部类是似复刻变量new出创建出似复刻变量时{}增创定义的类 ,它没有类名不能被static修饰声明为静态,它是非静态的内部类 ,匿名内部类{}的实例与它创的那个似复刻变量的实例一起完成的,{}类的内容在定义时就完成了实例化 ,它的使用是一次性的因为匿名后面无法再用此类变量创似复刻变量 ,即对于所在外部类来说它是一个非静态成员属于是非静态内部类,类的内容将来被似复刻变量复制,它一创建就实例后只能在它所在的{}里一次用的,再用就要再调用再创一个新的实例再用的,类的{}内容也是作为它new创的它那个类的似复刻变量的增扩在堆区的,所以匿名内部类{}里面的内容也不能有static的也不允许有static final修饰的常量,而且访问的数据只能是全局编译下没有修改过的默认final数据

  • 匿名内部类{}里不能有静态、不允许static final常量、不允许有被修改的非final数据

3.4局部内部类

局部内部类的生命在所在方法、代码块{}内部,不可能是类级别的{}生命同样长的,它不属于类级别的 ,不能用static修饰,也是非静态的内部类里面{}的内容不能有静态的,也不允许有static final修饰的常量

  • 局部内部类{}里不能有静态、不允许static final常量
相关推荐
AI你一生一世1 小时前
不止于时序存储:DolphinDB 如何成为 AI 时代的工业智能底座
java·人工智能·struts·时序数据库·工业智能·dolphindb·ai基础设施
云-缩影2 小时前
拆解 AI 图像生成应用的后端架构:ECS、OSS 和大模型 API 怎么配合
java·spring boot·后端
瑞克-桑切斯2 小时前
7、MySQL 慢查询排查与优化实战指南
java·服务器·数据库
前进的李工4 小时前
Agent 学习笔记 05:系统提示词应该怎么写
笔记·学习·prompt·agent·个人开发·few-shot·ai应用开发
正在走向自律5 小时前
【3/5】人工智能训练师 三级/高级工 考证学习方向:从“独立执行”到“设计、归因与全链条负责”
人工智能·学习·人工智能训练师·注方案设计·数据质控负责人·模型评测与调优辅助·ai训练项目交付
海的透彻6 小时前
dockerfile如何快速构建容器(java服务)
java·开发语言
code2cat7 小时前
Java工具篇之Gradle:用任务图组织构建与交付
java·开发语言·单元测试·gradle
CCIE-Yasuo7 小时前
网络安全-学习数据库-Mysql-2
数据库·学习·mysql
La Pulga7 小时前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
后台模板学习7 小时前
大模型 Prompt 工程在电商订单系统中的踩坑记录
java·python·prompt