本篇博客摘选整理自《大话设计模式》,主要为《深入分析Java的接口和抽象类》做补充内容。
PS:《深入分析Java的接口和抽象类》博客地址:http://blog.csdn.net/qiumengchen12/article/details/44851275
接口和抽象类的辨析
第一:类是对对象的抽象;抽象类是对类的抽象;接口是对行为的抽象。
接口是对类的局部(行为)进行的抽象,而抽象类是对类整体(字段,属性,方法)的抽象。如果只关注行为对象,那么也可以认为接口就是抽象类。总之,不论是接口、抽象类、类甚至是对象,都是在不同层次、不同角度进行抽象的结果,它们的共性就是抽象
第二:如果行为跨越不同类的对象,可使用接口;对于一些相似的类对象,可继承抽象类。
第三:从设计角度讲,抽象类是从子类中发现了公共的东西,泛化出父类,然后子类继承父类,而接口是根本不知道子类的存在,方法如何实现还不确定,预先定义。
抽象类很好地体现了敏捷开发的思想:通过重构改善既有代码的设计。
第四:实现接口和继承抽象类并不冲突的,完全可以让超人类继承人类,再实现飞行接口。