1、抽象类可以有非抽象的方法,成员格式不固定,但是至少要有一个抽象函数;接口的成员格式是固定的,变量必须用 public static final修饰,函数必须用public abstract修饰;
2、抽象类要想实例化必须被子类继承extends,继承抽象类的子类不能再继承其他类,因为java中类与类之间是单继承关系;接口的实例化是被一个类实现 implements,该类可以同时实现多个接口。
3、抽象类可以实现多个接口;接口不能继承抽象类,接口与接口之间可以使多继承关系。
4、抽象类在使用中可以被作为一个模板;接口在使用中被作为一个功能加入类中。
补充一点:两者都是通过多态来进行实例化,在两者功能相当的情况下尽量选择接口因为java中类单继承的局限性。 |