第十章:内部类(上)

来源:互联网 发布:ibm电池修复软件 编辑:程序博客网 时间:2024/05/21 23:31

可以将一个类的定义放在另一个类的定义内部,这就是内部类。
内部类是一种非常有用的特性,它允许你把一些逻辑相关的类组织在一起,并控制位于内部的类的可视性。
内部类可以访问外部类的所有成员,内部类持有外部类的引用。

10.3 .this 和 .new

如果你在内部类需要对外部类引用, 可以使用 外部类的名字.this。其在编译期就被知晓并受到检查,因此没有任何性能开销。
必须使用外部类对象来创建内部类对象(静态内部类除外)。外部类对象.new 内部类名称()

10.4 内部类与向上转型

private内部类给类的设计者提供了一种途径,通过这种方式可以完全阻止任何依赖于类型的编码,并且完全隐藏了实现的细节。【个人感觉:这小节说的是private的内部类,在外部类中提供创建内部类对象的方法,因为是private修饰的,所以其他类没有访问权限。隐藏实现细节。】

10.5 在方法和作用域内的内部类

为什么这么做呢?
1. 你实现了某类型的接口,于是可以创建并返回对其的引用。
2. 你需要解决一个复杂的问题,想创建一个类来辅助你的解决方案,但是又不希望这个类是公共可用的。

10.6 匿名内部类

没有名字的内部类。

10.7 嵌套类

嵌套类其实就是指静态内部类。
嵌套类不持有外部类的引用。
不能从嵌套类的对象中访问非静态的外部类的对象。
创建内部类对象:new 外部类名称.内部类名称();

10.7.1 接口的内部类

其实就是把内部类定义为接口的成员变量。

public interface TestInner {    void eat();    class Test implements Contents{        @Override        public int value() {            return 0;        }    }}

一个内部类被嵌套多少层并不重要,它能够透明的访问所有它所嵌入的外围类的所有成员。

0 0
原创粉丝点击