接口和抽象类有什么区别?
抽象类 | 接口 | |
定义关键字 | abstract | interface |
实现的方式 | extends关键字 | implements |
是否可以存在构造函数 | 是 | 否 |
是否可以被实例化 | 否 | 否 |
关于属性 | 可以定义变量,也可以定义常量 | 只能定义常量 |
抽象方法 | 可以存在,也可以不存在 | 除了默认的(default)修饰的,其余全是抽象方法 |
继承关系 | 单根继承,只能继承类 | 多根继承,只能继承接口 |
抽象类 | 接口 | |
定义关键字 | abstract | interface |
实现的方式 | extends关键字 | implements |
是否可以存在构造函数 | 是 | 否 |
是否可以被实例化 | 否 | 否 |
关于属性 | 可以定义变量,也可以定义常量 | 只能定义常量 |
抽象方法 | 可以存在,也可以不存在 | 除了默认的(default)修饰的,其余全是抽象方法 |
继承关系 | 单根继承,只能继承类 | 多根继承,只能继承接口 |