内部类
来源:互联网 发布:淘宝客服删除聊天记录 编辑:程序博客网 时间:2024/06/06 06:30
---------------------------------------------------------------------------------------------------------------------------------------------------
内部类种类大致如下:
*非静态内部类(成员内部类)
*静态内部类(嵌套内部类)
*局部内部类(定义在方法内或者作用域内的类,好似局部变量,所以不能有访问控制符和static等修饰)
*匿名内部类(没有名字,仅使用一次,new个对象即扔掉类的定义)
*静态内部类(嵌套内部类)
*局部内部类(定义在方法内或者作用域内的类,好似局部变量,所以不能有访问控制符和static等修饰)
*匿名内部类(没有名字,仅使用一次,new个对象即扔掉类的定义)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
为什么非静态内部类持有外部类引用,静态内部类不持有外部引用?
(此回答作参考使用)
***这个问题非常简单,就像 static的方法只能调用static的东西,非static可以调用非static和static的一样。static→ 针对class, 非static->针对 对象,我是这么简单理解的。***
***这个问题非常简单,就像 static的方法只能调用static的东西,非static可以调用非static和static的一样。static→ 针对class, 非static->针对 对象,我是这么简单理解的。***
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
成员内部类
1.成员内部类可以无条件的访问外部内的所有成员(包括private、static等)
2.外部内如果要访问内部类的成员,必须先创建一个成员内部类的对象,再通过这个对象引用来访问。
2.外部内如果要访问内部类的成员,必须先创建一个成员内部类的对象,再通过这个对象引用来访问。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
局部内部类
1.局部内部类和成员内部类的区别在于,前者作用域仅局限于方法内。
2.局部内部类有一个优势,即对外部世界可以完全地隐藏起来。
3.局部内部类不能用public、protected、private以及static修饰符的。
2.局部内部类有一个优势,即对外部世界可以完全地隐藏起来。
3.局部内部类不能用public、protected、private以及static修饰符的。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
匿名内部类
应用的业务场景:
1.只用到类的一个实例;
2.类在定义后马上用到;
3.类非常小(比如类代码在10行以下)。
2.类在定义后马上用到;
3.类非常小(比如类代码在10行以下)。
匿名内部类的类型可以是如下几种方式:
*接口匿名内部类
*抽象类匿名内部类
*类匿名内部类
*抽象类匿名内部类
*类匿名内部类
1.由于匿名内部类没有名称,因此在创建匿名内部类对象时,new运算符后是超类或接口的名称,其后面的{}内部为匿名类的定义。
2.匿名类对象的创建与匿名内部类的定义是在一起完成的。
2.匿名类对象的创建与匿名内部类的定义是在一起完成的。
注意:方法内的回调对象(匿名内部类的实例)也是持有外部类引用的
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
静态内部类
1.当内部类不需要访问外围类对象的时候,应该使用静态内部类。
2.静态内部类,只能访问外部类的静态成员。
2.静态内部类,只能访问外部类的静态成员。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
(来自程序员chatbook)
阅读全文
0 0
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 设计模式知识连载(12)---调用方式:多态
- Android使用MediaCodec将YUV硬编成H264
- git 用法小记
- QString与char*的相互转换
- 2017年12月APP上架被拒最新总结
- 内部类
- Anaconda环境下的python与Linux自带的python,python3,pip,pip3指令共存且互不影响
- Android 开发之漫漫长途Ⅰ—Android 系统的创世之初以及 Activity 的生命周期
- JQ轮播(左右轮播切换,小圆点hover)
- 习题7.1
- spring-cloud-eureka (一) 原理分析
- python报错PyUnicodeUCS2_AsUTF8String或者PyUnicodeUCS4_AsUTF8String的问题
- App开放接口api安全性—防腾讯签名sign的设计与实现
- ntohs,htons,ntohl,htonl