Thinking in Java Study(08)

来源:互联网 发布:已而为知之者,殆而已矣 编辑:程序博客网 时间:2024/06/05 12:38
 
接口和内部类
1. 接口使用interface关键字定义,接口可以看作是“纯粹的”抽象类。它允许类的创建者为一个类建立其形式:有方法名、参数列表和返回类型,但没有任何方法体。接口可以包含有数据成员,但它们隐含都是static和final的。
接口只提供了形式,而未提供任何具体实现。
接口的实现通过关键字implements实现,接口中的方法被自动定义为public的。接口也可以向上转型。
类继承只能从一个类继承,而类可以实现多个接口,并可以向上转型为任何一个实现了的接口。
2. 使用接口的两个原因:(1)为了能够向上转型为不止一个的基类型
(2)防止客户端程序员创建该类的对象
3. 组合接口时的名字冲突
       实现多重继承时,可能会有两个接口定义的方法名称相同,但参数、返回值或实现不同。应尽量避免这种情况发生。
4. 通过继承来扩展接口,如果想在接口中添加新的方法可以采用继承的方式,继承后的类仍然是接口不实现任何方法,添加的方法认为声明。
5. 群组常量
由于接口中任何数据成员都自动是static和final的,所以接口就成为了一种很便捷的用来创建常量组的工具。(类似C或C++中的enum类型)。
6. 初始化接口中的数据成员
接口中成员是static和final的,不能为空的final,但可以用非常量的表达式初始化。当成员第一次被访问时初始化。
7. 内部类
如果想从外部类的非静态方法之外的任意位置创建某个内部类的对象,需要具体指明这个对象的类型:OuterClassName.InnerClassName
8. 链接到外部类
当生成一个内部类的对象时,此对象与制造它的外围类的对象之间就有了一种联系,它能访问其外围对象的所有成员,而不需要任何特殊条件。
要创建内部类必须使用此外围类的一个对象来创建起内部类的一个对象
9. 内部类的继承
继承内部类时,构造器方法要保证外部类的初始化。
10.              使用内部类的原因
每个内部类都能独立的继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。
 
原创粉丝点击