现在的位置: 首页 > 综合 > 正文

第八章 接口与内部类

2018年01月25日 ⁄ 综合 ⁄ 共 760字 ⁄ 字号 评论关闭

8.1 接口

如果知道某事物应该成为一个基类,那么第一选择应该是使它成为一个接口,只有在强制你必须要具有方法定义和成员变量的时候 ,采用该改而选择抽象类,或者在必要时使其成为一个具体类。

extends可以引用多个接口,但只可以将extends用于单一类。

接口中的任何字段都自动是static和final的。

嵌套接口。

8.2 内部类

内部类和组合是完全不同的概念。

当将内部类向上转型为其基类,尤其是转型为一个接口的时候,内部类就有了用武之地。这是因为此内部类——某个接口的实现——对于其他人来说能够完全不可见,并且不肯用。所得到的只是指向基类或借口的引用,所以能够很方便地隐藏实现细节。

普通的(非内部类的)类,不能声明为private或protected;它们只可以被赋予public或者包访问权。

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

匿名内部类。 

内部类拥有其外围类的所有元素的访问权。(当某个外围类的对象创建了一个内部类对象时,此内部类对象必定会保存一个指向那个外围类对象的引用。)

嵌套类

如果不需要内部类对象与其外围类对象之间有关系,那么可以将内部类声明为static。这通常称为嵌套类。

嵌套类意味着:

1)要创建嵌套类的对象,并不需要其外围类的对象。
2)不能从嵌套类的对象中访问非静态的外围类对象。

嵌套类与普通的内部类还有一个区别。普通内部类的字段和方法,只能放在类的外部层次上,所以普通的内部类不能有static数据和static字段,也不能包含嵌套类。但是嵌套类可以包含所有这些东西。

如果需要引用外围类对象,可以通过在此外围类名称后面跟一个句点和this关键字来实现。

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

8.3 为什么需要内部类。

内部类使得多重继承的解决发难变得完整。

闭包和回调

内部类与控制框架

抱歉!评论已关闭.