一、相同点:
1.都是抽象类型
2.都可以有实现方法(JDK8之前不允许)
3.都可以不需要实现类或者继承者去实现所有方法(JDK8之前不行,之后接口中的默认方法不需要实现者实现)
二、不同点
1.抽象类不可以多重继承,接口可以(无论是多重类型继承还是多重行为继承)
2.抽象类和接口反映出的设计理念不同。抽象类反映的是“is-a”关系,接口标示的是“like-a”关系
3.接口中定义的变量默认是public static final 类型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。抽象类中的变量默认是default类型,其值可以在继承类中重新定义,也可以重新赋值