第四章 类和接口(二)

18接口优于抽象类

由于java是单继承,因此接口在类型定义方面优于抽象类。但抽象类也有自己的优点,

抽象类允许包含某些方法的实现,接口不允许。

接口相对抽象类的优点:

  1. 现有的类可以很容易被更新,以实现新的接口。这句话的意思是新接口比抽象类更容易引入java平台。
  2. 接口是定义mixin类型的理想选择。
  3. 接口允许我们构造非层次结构类型的框架。由于抽象类只能单继承,所以只能构造层次结构的框架。

 通过对你导出的每个重要接口都提供一个抽象的骨架实现类,可以把接口和抽象类的优点结合起来。此时,接口的作用仍然是定义类型,但是骨架实现类接管了所有与接口实现的相关操作。按照惯例,骨架实被称为AbstractInterface,这里的Interface就是指所实现接口的名称。常见的例子有Collections框架里重要接口的骨架实现类,AbstratcCollection、AbstratcSet、AbstratcSet和AbstratcMap。

编写骨架实现类必须认真研究接口,确定哪些方法是最基本的,其他的方法可以根据它们来实现,这些基本方法将成为骨架实现类中的抽象方法。然后,为接口中的其他方法提供具体的实现。例如,下面是List接口的骨架实现类:

19接口只用于类型定义

当类实现接口时,接口就充当可以引用这个类的实例的类型。因此,类实现了接口,就表明客户端可以对这个类的实例实施某些动作。为了其他任何目的而定义接口是不恰当的。

导出常量的常见几种方案,

  1. 常量与类或者接口紧密相关,直接放在类或接口里。
  2. 如果需要枚举类型,直接用枚举类型。
  3. 其他用不可实例化的工具类导出。

大量利用工具类导出的常量,可以通过静态导入机制(即import static com.effectivejava.science.PhisicalConstants.*;),避免用类名修饰常量名。

20类层次优于标签类

有时候,会遇到带有两种或者更多种风格的实例的类,并包含表示实例风格的标签域。比如,考虑下面这个类,它能够表示圆形或矩形。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值