一、表象形态上:
- 抽象类可以给出一些方法的实现,接口却不可以;
- 抽象类的抽象方法可以被子类部分实现,接口却必须全部实现;
- 一个类只能继承一个抽象类,但却可以实现多个接口。
二、设计思想上:
- 类是对对象的抽象,抽象类是对类的抽象;接口是对方法(类中的部分方法)的抽象;
- 如果方法跨域不同类的对象,可以使用接口;对于一些相似的类对象,用继承抽象类;
- 从设计角度上说,抽象类是从子类中发现了公共的东西,泛化出父类,然后子类继承父类;而接口根本不知道子类的存在,方法如何实现还不确认,预先定义方法。
- 抽象类基本是自底向上抽象出来的,而接口是自顶向下设计出来的。
参考:《大话设计模式》