接口优于抽象类(18)

1、java 提供了两种允许多个实现的类型:接口、抽象类

  • 抽象类允许某些方法的实现,接口不允许
  • 为了实现抽象类定义的类型,类必须成为抽象类的子类
  • java只允许单继承,抽象了我受到了极大的限制
  • 任何一个类,只要实现了所有定义的必要方法,就被允许实现一个接口(无论该类处于什么层次)

2、现有类可以很容易被更新,以实现新的接口

3、接口是混合(mixin)类型的理想选择

4、接口允许我们构建非层次结构的类型框架

5、接口使得安全的增强类的功能成为可能

  • 抽象类则除了继承没别的好办法

6、每个重要接口都提供一个骨架实现类

  • 接管所有与接口实现相关的类
  • 骨架类就是一个抽象类,他可以实现一个接口
  • 接口和抽象类的优点结合起来
  • 如下面静态工厂的实现,骨架实现类,为抽象类提供实现上的帮助,有没有严格限制

084844_rcpr_3847203.png

  • 可以用内部私有类模拟多重继承

7、抽象类演变比接口演变容易得多

8、设计公有接口需要非常谨慎,一旦公开被广泛接受,再想修改是不可能的

9、总结:

  • 接口通常是定义允许多个实现的类型的最佳途径
  • 当演变容易性比灵活性更重要时,选择抽象类,接受她的局限
  • 重要接口坚决使用骨架实现类

转载于:https://my.oschina.net/u/3847203/blog/1824964

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值