一、共同点(两者都不能直接实例化)
都不能直接 new 对象
不能直接
new 接口()或new 抽象类(),必须由子类 / 实现类去继承 / 实现后使用。都可以包含抽象方法
都能定义没有方法体的方法,强制子类去实现。
都属于抽象层设计
用来定义规范 / 模板,让具体类去实现细节,符合面向抽象编程思想。
都可以被继承 / 实现
抽象类用
extends继承,接口用implements实现。
二、核心区别
总结
共同点:都不能实例化、都能包含抽象方法、都是抽象层设计。
核心区别:抽象类单继承、有构造方法、可定义普通变量;接口多实现、无构造方法、只能定义常量。
使用场景:需要复用代码用抽象类;需要定义规范 / 扩展能力用接口。