- 抽象类可以存在普通成员函数,而接口中只能存在public abstract方法
- 抽象类只能单继承,接口可以多实现
- 抽象类中的成员变量可以是多种类型,而接口中的成员变量只能是public static final
接口设计的目的,是对类的行为进行约束,也就是提供一种机制,可以强烈要求不同的类具有相同的行为。他只约束了行为的有无,但不对如何实现进行限制。
而抽象类的设计目的,是代码复用。当不同的类具有某些相同的行为,且其中一部分行为的实现方法一致时,可以让这些类都派生于一个抽象类。
抽象类是对类本质的抽象,表达的是is a的关系,BMW is a car.抽象类包含并实现子类的通用特征,将子类存在差异化的特征进行抽象,交由子类去实现。
接口是对行为的抽象,表达的是like a的关系。bird like a aircraft。接口的核心是定义行为