当前位置:网站首页>内部类(四种内部类详解)
内部类(四种内部类详解)
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.如果外部类和静态内部类的成员重名时,静态内部类访问的时,默认遵循就近
原则,如果想访问外部类的成员,则可以使用(外部类名.成员)去访问
边栏推荐
- In crsctl, the function of displayed home
- Plato Farm在Elephant Swap上铸造的ePLATO是什么?为何具备高溢价?
- 软件测试面试题:软件测试项目从什么时候开始?为什么?
- [what subjects does Huawei hcie security test? What knowledge points does Huawei hcie security test have?]
- CocoaPods 重装
- Principle analysis and best practice of guava cache
- Force buckle 919. Complete binary tree inserter
- 大佬们,mysql版本低,不支持cdc,所以canal同步binlog至kafka,数据同步至cli
- 高并发遇到死锁了,如何搞?
- Comprehensively design an oppe home page -- the style of the search and oper part of the page
猜你喜欢

LinkedList underlying source code

zibbix安装部署

JVM-内存模型 面试总结

高并发遇到死锁了,如何搞?

STL源码剖析

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

Instructions - Worthington reverse transcriptase, recombinant HIV testing program
![[day_4-review, basic concepts of objects and arrays - 1]](/img/57/750f12d5315b682d2aeec81f39dafb.png)
[day_4-review, basic concepts of objects and arrays - 1]

为什么要使用MQ消息中间件?这几个问题必须拿下

说明书丨Worthington逆转录酶、重组 HIV 检测方案
随机推荐
中国能否在元宇宙的未来发展中取得突破,占领高地?
高并发遇到死锁了,如何搞?
最高7.5Gbps!全球首款5nm 5G基带骁龙X60发布:支持聚合全部主要频段!
紫光展锐:2020年将有数十款基于春藤510的5G终端商用
软件测试面试题:设计系统测试计划需要参考的项目文档?
The solution that the laptop can connect to WiFi but the browser cannot open the web page
Principle analysis and best practice of guava cache
puzzle(002)内固、外固、哈密顿
屏蔽自动更新描述文件(屏蔽描述文件)
MobileVIT学习笔记
Dual process theory and triple mental model
Daily news on July 15, 2022: meta announced the launch of make-a-scene: AI image generation can be controlled based on text and sketches
ECCV 2022 | 中科大&京东提出:数据高效的Transformer目标检测器
Implicit intent
[what subjects does Huawei hcie security test? What knowledge points does Huawei hcie security test have?]
Box model and element positioning
软件测试面试题:系统测试的策略有多少种?
STL源码剖析
crsctl中,显示的HOME的作用
App test positioning method