相同点:
1、都位于继承的顶端、用于被其他类实现或继承
2、都不能直接实例化对象
3、都包含抽象方法、其子类都必须覆盖重写这些抽象方法
区别:
1、抽象类为部分方法提供实现,避免子类重复实现这些方法,提高代码的重用性;接口只能包含抽象方法;
2、一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥补了Java的单继承)
3、抽象类是这个事物中应该具备的内容,继承体系是一种 is.........a 关系
4、接口是这个事物中的额外内容,继承体系是一种like.........a 关系
二者的选用:
优先选用接口尽量少用抽象类