Java中接口interface和抽象类abstract class很相近,从某种意义上说,接口可以看做“多重继承”。但是两者之间还是有很大的区别的。
- 接口中的方法一定均为抽象方法(public abstract),且接口中的成员变量只能是public static final类型的,接口不能有静态方法。抽象类中至少有一个抽象方法就可以了,而且抽象类中允许有各种类型的成员变量,也可以有静态方法。
- 接口是对行为的抽象,实现的是“has a”的关系;抽象类是对事物的抽象,实现的是“is a”的关系。
- 一个类可以实现多个接口,但是只能继承一个抽象类。
- 接口是一种辐射式设计,即一旦接口发生了变化,则所有实现这个接口的类都必须进行相应的改动。而抽象类则是一种模板式设计,对于抽象类来说,如果需要添加新的方法,可以直接在抽象类中添加具体的实现,不需要改变子类。
