THINKING IN JAVA 读书笔记——内部类
来源:互联网 发布:js 字符串包含子串 编辑:程序博客网 时间:2024/05/22 05:00
1 为什么要使用内部类?
每个内部类都能独立地继承自一个实现,无论外围类是否继承了某个实现,对于内部类都没有影响。内部类使得多重继承的解决方案变得完整,接口解决了部分问题,而内部类有效地实现了“多重继承”。
2.创建一个内部类
如果想从外部类的非静态方法之外的任意位置创建某个内部类对象,必须具体指明这个对象的类型:OuterClassName.InnerClassName.注意这里指的是外部类,而不是外围类,外围类是指包着内部类的那个类,在外围类中我们创建一个内部类对象不需要指明OuterClassName。
3链接到外部类
当生成一个内部类对象时,此对象可以访问制造它的外围类的所有成员,包括private,因为当此内部类对象产生时,它会秘密的捕获一个外围类对象的引用,这是很关键的,就是拥有了这个引用,内部类才访问到了外围类的所有成员。
4.this和.new
在非静态内部类想要返回一个外围类的引用时,就需要用外围类的名字后面紧跟圆点和this: return DotThis.this
想要创建内部类的对象,必须使用外部类的对象来创建该内部类对象 Out.Inner in = out.new Inner();在拥有外部类对象之前是不可能创建内部类对象的,这是因为内部类对象会暗暗地链接到外部类对象上。但若是嵌套类的话,就不需要对外部类对象的引用了。
5内部类和向上转型
外围类是可以访问它的内部类的私有成员的,但是外部类却不能。
6局部内部类
在这里我们需要注意的是,内部类的作用范围只是被限制在一定的区域内。
7匿名内部类
它创建的是继承自某个类或是实现某个接口的子类对象,之所以叫它匿名内部类,是因为它没有名字。需要注意的是,在匿名类的末尾有分号:return new FatherClass(){}; 这个分号只是标记表达式的结束。
另外有所迷惑的就是关于它使用外部定义的对象,编译器要求参数引用必须是final的,但若此参数并没有直接在匿名内部类中使用,可以不是final的,此外都必须是final的。
8嵌套类
当把一个内部类声明为静态的时,它并没有普通的内部类对象那样保存了一个指向外围类对象的引用。要创建嵌套类对象,并不需要其外围类的对象,不能从嵌套类对象中访问非静态的外围类对象。普通内部类不能有static数据和static字段,也不能包含嵌套类,而嵌套类可以拥有这些。
在接口中命名的内部类都自动地是public和static的。
一个内部类被嵌套多少层并不重要,它能透明地访问所有它所嵌入的外围类的所有成员。
9内部类的继承
class InheritInner extends WithInner.Inner 在这个类中它默认的构造器并不好用,这是因为内部类必须要有指向它外围类的引用,这样我们必须自己显示的创建它
InheritInner (WithInner wi){
wi.super();
}
这样编译才能通过。
10 内部类覆盖
当继承了某个外围类的时候,内部类并没有发生什么特别神奇的变化。这两个内部类是完全独立的两个实体,各自在自己的命名空间内。
- THINKING IN JAVA 读书笔记——内部类
- thinking in java——内部类
- Thinking in Java——第十章-内部类
- Thinking in Java:内部类
- Thinking in Java 内部类
- Thinking in java 内部类
- 《Thinking in Java》读书笔记之内部类
- Thinking in Java之匿名内部类
- Thinking in java 之:内部类
- Thinking in Java 整理笔记:内部类
- Thinking in java 之 内部类
- Thinking in Java:第十章-内部类
- Thinking in Java第三版读书笔记-第八章:接口与内部类
- 第十章:内部类 《Thinking in java》学习笔记
- Thinking in Java 内部类访问外部类
- [Thinking in JAVA] 关于内部类的一些知识点
- Thinking in Java---内部类及一个迭代器实例
- 【Thinking in Java笔记】为什么需要内部类
- Zend Studio Installation
- adt
- int byte
- cdecl、pascal、stdcall、fastcall
- AMFPHP + PHP 5.3.1
- THINKING IN JAVA 读书笔记——内部类
- Excel XP数据分析应用指南
- IconUtility Component for Dynamic Run-Time Icons
- Excel XP中的复制技巧
- VC++2005项目的目录结构设置
- JSP乱码问题及解决方法
- 十里红毯or十里长亭
- Excel单元格内文本换行三法
- Excel XP技巧100