接口和抽象类的相同点:
- 都包含抽象方法。
- 都不能实例化
- 抽象方法要被实现,所以不能是静态的,也不能是私有的
接口和抽象类的不同点:
- 抽象类被继承,接口被实现。
- 接口中只能有方法声明,抽象类中的方法既能有声明也可以有实现(抽象类可以不包含抽象方法,但是包含抽象方法的非接口一定是抽象类)。
- 接口中的变量只能是公共的、静态的常量,抽象类中的变量可以是普通变量。
- 抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。
- 抽象类支持单继承,接口支持多实现(并且接口可以单继承接口)。