一个类可以实现多个接口,但是只能继承一个父类。
变量 | 构造方法 | 方法 | |
抽象类 | 无限制 | 子类通过构造方法链调用构造方法, 抽象类不能用new操作符实例化 | 无限制 |
接口 | 所有的变量必须是public static final | 没有构造方法,接口不能用new操作符实例化 | 所有方法必须是公共的抽象实例方法 |
抽象类和接口都是用来明确多个对象的共同特征的。
一般来说,清晰描述父子关系的强的“是一种”的关系,应该用类建模。如圆和矩形都是一种几何对象,用类的继承来建模。
弱的“是一种”的关系,也称为类属关系,它表明对象拥有某种属性,可以用接口来建模。如圆是可比较的,因此可以实现Comparable接口。
通常,推荐使用接口而非抽象类,因为接口可以定义非相关类共有的父类型。接口比类更加灵活。