当前位置:网站首页>内部类(四种内部类详解)
内部类(四种内部类详解)
2022-07-27 19:07:00 【小唐学抓娃】
== = = = = = = 内部类(四种内部类详解)= = = = = = = ==
一、基本介绍:一个类的内部又完整的嵌套了另一个类结构。被嵌套的类称为内部类(inner class),嵌套其他类的类称为外部类(outer class)。是我们类的第五大成员【思考:类的五大成员是哪些?[属性、方法、构造器、代码块、内部类]】,内部类最大的特点就是可以直接访问私有属性,并且可以体现类与类之间的包含关系,注意:内部类是学习的难点,同时也是重点,后面看底层源码时,有大量的内部类.
如果定义类在局部位置(方法中/代码块) :(1) 局部内部类 (2) 匿名内部类
定义在成员位置 (1) 成员内部类 (2)静态内部类
二、基本语法
class Outer{ //外部类
class Inner{ //内部类
}
}
class Other{ //外部其他类
}
三、内部类的分类
定义在外部类局部位置上(如方法内):
1)局部内部类(有类名)
2)匿名内部类(没有类名,重点!!!)
·定义在外部类的成员位置上:
1)成员内部类(没用static修饰)
2)静态内部类(使用static修饰)
1、局部内部类
说明:局部内部类是定义在外部类的局部位置,比如方法中,并且有类名。
1.可以直接访问外部类的所有成员,包含私有的
2不能添加访问修饰符,因为它的地位就是一个局部变量。局部变量是不能使用修饰符的。但是可以使用final修饰,因为局部变量也可以使用final
3.作用域:仅仅在定义它的方法或代码块中。
4.局部内部类—访问---->外部类的成员[访问方式:直接访问]
5.外部类—访问---->局部内部类的成员
访问方式:创建对象,再访问(注意:必须在作用域内)
记住:
(1)局部内部类定义在方法中/代码块
(2)作用域在方法体或者代码块中
(3)本质仍然是一个类
6.外部其他类—不能访问----->局部内部类(因为局部内部类地位是一个局部变量)
7.如果外部类和局部内部类的成员重名时,默认遵循就近原则,如果想访问外部类的成员,则可以使用(外部类名.this.成员)去访问
8. 外部类在方法中,可以创建 内部类 对象,然后调用方法即可
2、匿名内部类
(1)本质是类
(2)内部类
(3)该类没有名字
(4)同时还是一个对象
说明:匿名内部类是定义在外部类
的局部位置,比如方法中,并且没有类名
1.匿名内部类的基本语法
new类或接口(参数列表){
类体
};
①匿名内部类的语法比较奇特,请大家注意,因为匿名内部类既是一个类的定义,同时它本身也是一个对象,因此从语法上看,它既有定义类的特征,也有创建对象的特征,,因此可以调用匿名内部类方法。
②.可以直接访问外部类的所有成员,包含私有的
③不能添加访问修饰符,因为它的地位就是一个局部变量
④作用域:仅仅在定义它的方法或代码块中。
⑤匿名内部类—访问---->外部类成员[访问方式:直接访问]
⑥外部其他类—不能访问----->匿名内部类(因为匿名内部类地位是一个局部变量)
⑦如果外部类和匿名内部类的成员重名时,匿名内部类访问的话,默认遵循就近原则,如果想访问外部类的成员,则可以使用(外部类名.this.成员)去访问
3、成员内部类
说明:成员内部类是定义在外部类的成员位置,并且没有static修饰。
1.可以直接访问外部类的所有成员,包含私有的
2.可以添加任意访问修饰符(public、protected、默认、private),因为它的地
位就是一个成员。
3.作用域和外部类的其他成员一样,为整个类体,在外部类的成员方法中创建成员内部类对象,再调用方法.
4.成员内部类—访问---->外部类成员(比如;属性)[访问方式:直接访问]
5.外部类—访问------>成员内部类 访问方式:创建对象,再访问
6.外部其他类—访问---->成员内部类
7.如果外部类和内部类的成员重名时,内部类访问的话,默认遵循就近原则,如果想访问外部类的成员,则可以使用(外部类名.this.成员)去访问
4、静态内部类
说明:静态内部类是定义在外部类的成员位置,并且有static修饰
1.可以直接访问外部类的所有静态成员,包含私有的,但不能直接访问非静态成员
2.可以添加任意访问修饰符(public、protected、默认、private),因为它的地位就是一个成员。
3.作用域:同其他的成员,为整个类体
4.静态内部类—访问---->外部类(比如:静态属性)[访问方式:直接访问所有静态成员]
5.外部类—访问------>静态内部类访问方式:创建对象,再访问
6.外部其他类—访问----->静态内部类
7.如果外部类和静态内部类的成员重名时,静态内部类访问的时,默认遵循就近
原则,如果想访问外部类的成员,则可以使用(外部类名.成员)去访问
边栏推荐
- Pytest失败重跑
- 技术管理 - 一定要抓大放小
- 自定义recycleView的删除&移动的动画
- ECCV 2022 | China University of science and Technology & jd.com proposed: data efficient transformer target detector
- 微软商店无法下载应用,VS2019无法下载插件问题解决方案
- 基于DSP 回传音通话降噪链路设计
- JVM-内存模型 面试总结
- Worthington蘑菇多酚氧化酶的特性及测定方案
- 自研5G芯片商用推迟?未来4年苹果iPhone都将采用高通5G芯片
- ADB ~ hide or disable the status bar and virtual keys
猜你喜欢

Can China make a breakthrough in the future development of the meta universe and occupy the highland?

报表设计丨如何让你的PowerBI看板出彩?

Chinese and English instructions - human alpha fetoprotein (AFP) ELISA quantitative Kit

Rust variable characteristics

Characteristics of exonuclease in Worthington venom and related literature

ACM mm 2022 | Zhejiang University proposed: point cloud segmentation, active learning of new SOTA

What are the product performances of industrial Ethernet switches?

PostgreSQL source code (65) analysis of the working principle of globalvis, a new snapshot system

"Geography language" large model Wenxin Ernie geol and its application

STL源码剖析
随机推荐
Worthington plasma amine oxidase (PAO) instructions
Dual process theory and triple mental model
CBAM learning notes
CBAM学习笔记
Principle analysis and best practice of guava cache
Worthington phospholipase A2 study phosphatidylcholine 2-acetylhydrolase
枚举Enum的简单使用
软件测试面试题:在windows下保存一个文本文件时会弹出保存对话框,如果为文件名建立测试用例,等价类应该怎样划分?
app测试定位方式
30分钟彻底弄懂 synchronized 锁升级过程
QModbus库使用,并作为ROS节点发布话题及程序CMakelist编写
递归/回溯刷题(上)
ADB ~ 隐藏或禁用状态栏和虚拟按键
Report design - how to make your powerbi Kanban brilliant?
Mysql 回表、SQL优化、四种隔离级别、三大日志binlog、redo log、undo log
[day_4-review, basic concepts of objects and arrays - 1]
Unit-- read Excel
crsctl中,显示的HOME的作用
除了「加机器」,其实你的微服务还能这样优化
ECCV 2022 | China University of science and Technology & jd.com proposed: data efficient transformer target detector