第十章 内部类
来源:互联网 发布:如何看淘宝搜索关键词 编辑:程序博客网 时间:2024/06/05 08:58
[1] 内部类,将一个类的定义放到另一个类的定义的内部。
[2] 当生成一个内部类对象时,该对象与制造它的外围对象有一种联系,它能访问其外围对象的所有成员。内部类拥有外部类的所有元素访问权限。
[3] .this 和 .new的用法 DotThis.Inner dtii = dt.new Inner(); 内部和外部的通信方法。不能直接创建内部类的对象,要通过外部类的对象来.new创建。
[4] 在方法和作用域中定义内部类,注意其可用范围。if语句中定义类。
[5] 匿名内部类
public static GameFactory factory =new GameFactory(){
public Game getGame(){return new Checkers();}//匿名内部类
};
[6] 嵌套类,就是static的内部类。普通的内部类对象隐式的保存了一个引用(指向创建它的外围类对象),static的内部类则没有。普通的内部类也不能含有static对象。
[7] static内部类,可以脱离外部类,独立创建对象。
10.8 为什么需要内部类
[1] 内部类的优势:每个内部类都能独立的继承自一个接口实现,外围类是否实现,对内部类没有任何影响。
[2] 接口解决了部分多重继承问题,内部类帮助解决。实现多继承的一种方式,基类为非接口时:
class D{}
abstract class E{}
class Z extends D{
E makeE(){ return new E(){};}//匿名内部类
}
[3] 闭包和回调,内部类是面向对象的闭包,包含外围类对象的信息,还自动拥有一个指向外围类对象的引用。
[4] 控制框架,一类特殊的应用程序框架。变化的事物和不变的事物分隔开来。
10.9 内部类继承
内部类的继承:要有特殊的语法。 首先导出类的默认构造函数不适用,必须是以其所继承的内部类的外部类为参数,外部类调用.super(),来初始化。因为内部类构造器必须连接到指向其外围类对象的引用,导出类中不存在默认的连接对象,必须显式定义出出来。
10.10 内部类可以被覆盖吗
覆盖之后没有任何的效果,当继承某个外围类的时候,内部类没有变化。两个内部类是完全独立的两个实体,各自在自己的命名空间中。(例子中,继承中导出类构造时,要先构造基类的方法(成员初始化,构造函数调用))。
10.11 局部内部类
在某个方法体里边创建内部类:效果基本等同于匿名类,但是匿名类只能用于实例初始化return newAnonymousClassName(){ //… };
局部内部类,有名字,可以定义不只一个对象。
10.12 内部类标识符
OuterClassName$1InnerName.class, 匿名的OuterClassName$1(数值).class
接口和内部类结合,解决C++中的多重继承问题。
- 第十章:内部类
- 第十章 内部类
- 第十章 内部类
- 第十章 内部类
- 第十章 内部类
- 第十章 内部类
- 第十章 内部类
- 第十章 内部类
- 第十章 内部类
- 第十章:内部类
- 第十章:内部类
- 第十章 多态 & 内部类
- 第十章 内部类 内部类和嵌套类
- 《Java 编程思想》--第十章:内部类
- JAVA编程思想-第十章 内部类
- 第十章 内部类(上)
- 第十章 内部类(下)
- 《Java编程思想》第十章 内部类
- ffmpeg应用总结
- Android中Bitmap和Drawable
- U-boot分析与移植(1)----bootloader分析
- jquery笔记
- 【邦尼与世爵,东森有关系?188913666】左边的浪漫
- 第十章 内部类
- Android 进程间通信之匿名共享内存Ashmem源码分析
- 安装ArcSDE for oracle的时候报oci.dll错误
- apk 反编译工具的使用
- java解析xml文件
- 致经常打飞机的人的一封信
- linux 内核链表
- 魅族4.2.1 自定义Toast适配问题
- 音频压缩:FAAC编码实例