抽象层次不同
抽象类是对类抽象,而接口是对行为的抽象
抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部行为进行抽象
跨域不同
抽象类所跨域的是具有相似特点的类,而接口却可以跨域不同的类
抽象类所体现的是一种继承关系,考虑的是子类与父类本质“是不是”同一类的关系
而接口并不要求实现的类与接口是同一本质,它们之间只存在“有没有这个能力”的关系
设计层次不同
抽象类是自下而上来设计的,要先知道子类才能抽象出父类
接口则是自上向下来设计的,不需要知道子类的存在,只需要定义一个规则即可
日常使用上的不同
抽象类主要的作用是代码重用
接口更多的则是API定义和实现分离,实现解耦的目的,定义行为和规范
参考链接:
面试常客:谈谈你对抽象类和接口的理解 - 掘金(设计层次上写的有问题,参考下面链接)