其实两者很相似,比如
1) 都可以被继承
(2) 都不能被实例化
(3) 都可以包含方法声明
(4) 派生类必须实现未实现的方法
所以我疑惑了很久,为什么要设计两个那么相似的东西,但是看了一篇文章我觉得说的还比较容易理解,地址如下:
https://www.jianshu.com/p/28e3b4d61945
自己总结一下,就是抽象类适合定义一些固有属性,比如class Person,有 眼睛,有鼻子,而所有的子类也都需要这些属性,那么就适合定义为抽象类,而接口更适合定义一些功能,继续比如class Person,这个人会开车,会编程,会画画,那么这些功能性的就更适合定义为接口。当然 实际开发中还是使用接口居多,因为接口的扩展性和可维护性更强,而且还有个最核心的区别就是java中只能单继承,但是可以多实现,所以接口往往更满足我们的实际需要。