接口与抽象类的区别
java中接口和抽象类最大的区别在于抽象类可以提供某些方法的具体实现,而接口则不可以。
在语法上接口和抽象类有以下不同点:
1、抽象类在java中表示的是一种继承关系,一个类只能使用一次继承关系,但是一个类可以实现多个接口;
2、继承抽象类使用extends关键字,实现接口使用implements关键字,继承写在前面,实现接口写在后面;
3、在抽象类中可以有自己的数据成员,也可以有非抽象类的成员方法,而接口中只能有静态的(static)不能被修改的(final)数据成员,所有的成员方法都是抽象的(abstract);
4、实现抽象类和接口的类必须实现其中的所有方法(抽象方法)。抽象类中可以有非抽象方法,而接口中则不可以有方法的实现;
5、抽象类中的变量默认在子类中可以重新定义,也可以重新赋值,而接口中定义的变量默认是public static final型,且必须赋值与初始化,所以实现类中不能重新定义与重新赋值;