本篇系Java进阶系列 篇4.18,介绍接口相较于抽象类的优点
跑题1——一直牢记的一点“100%的坚持比百分之九十几的坚持更容易”又一次体会到,上周跟随部门团建出去旅游,一旦停更就是将近一周,希望能把原则秉持下来
跑题2——今天看了new iPhone的发布会,依旧很精致,不知何时Android能有赶上iPhone水准的机器面世
两者区别
抽象类可以包含部分实现,接口不可以(Java8接口中可以定义默认方法,但不推荐如此使用接口)
为了实现抽象类定义的类型,必须extends 抽象类,限制了其可扩展性
接口的优势
- 已有类可以很容易被更新,以实现新接口
- 接口是定义mixin(像中文“迷信”,实则取自此词,代表混合类型)的理想选择
- 允许我们构造非层次结构的类型框架(就像我们每个人身怀多技一样,每个类也可能有多种特性)
- 使得增强类的功能更加安全
pay attention
公共接口一旦被公开,修改起来就极其麻烦,所谓牵一发而动全身,所以设计接口时要谨慎;
实际项目中发现这个点其实是一个经验问题,又要最小化接口,又要把接口设计得符合SOLID设计模式五大原则,就要求我们在实际工作中训练好这个技能,把握好接口设计的度
抽象类也并非一无是处,它的改变就比接口要简易的多,实际使用时也是体验很好的一种设计方法,不过抽象类的使用也要有所衡量,只有在确实是属于一个类别的类时才好去使用抽象类,否则就违背了我们的编程原则