首先说明两者最主要的区别:
接口是完全抽象的,不允许实现任何方法。抽象类是允许实现方法的。
其次的区别有:
- 接口使用关键字interface声明,使用关键字implements被实现。抽象类使用关键字abstract声明,使用关键字extants被继承。
- 接口内的成员变量只能是static和final。抽象类的成员变量既可以是static,也可以是非static;既可以是final,也可以是非final。
- 抽象类可以实现接口,但接口不可以实现抽象类。
- 抽象类可以继承多个类(class)和实现多种接口,但是接口只能继承另外一种接口。
- 接口内的成员默认是public类型,抽象类的成员还可以是private、protected等等类型。
- 抽象类只能继承另外一个抽象类,但接口可以继承多个类型的接口
- 需要注意的一点是,一个类可以实现多个接口,但是只能继承一个抽象类。