1、从形态上:抽象类可以给出一些成员的实现,接口却不包含成员的实现。抽象类的抽象成员可被子类部分实现,接口的成员需要实现类完全实现,一个类只能继承一个抽象类,但可实现多个接口
2、类是对对象的抽象,抽象类是对类的抽象,接口是对行为的抽象。也就是说接口是对类的局部(行为)进行的抽象,而抽象类是对整体(字段,属性,方法)的抽象。
3、如果行为跨越不同类的对象,可使用接口,对于一些相似的类对象,用继承抽象类。
4、设计角度:抽象是从子类发现公共的东西,泛化出的父类,然后子类继承父类,而接口是根本不知道子类的存在,方法如何实现还不确认,预先定义。