1.两者提供了一种接口与实现更加结构化的方法。比如把奇数放到数组前面/被3整除的数字放到数组前面用接口或者函数指针来实现判断某一规则的真假。Runnable接口就是最好的解释。
2.抽象类中可以存在具体实现的方法、接口中的只声明方法。不给实现。
3.抽象类中有任意类型的Fields,接口中的Fields都是public static final
4.抽象类是对类的抽象,接口是对行为的抽象,比如抽象类中可以有各种Fields,而接口中一般很少有Fields
5.抽象类是一种继承层次结构,只能从上到下;而接口更加像一种扁平的层次结构,不管是哪个类都可以实现某个接口