他们的不同点:
1.抽象类中可以有非抽象的方法而接口中只能够有抽象的方法!
2.一个子类可以继承多个接口,而一个类只能继承一个抽象类!
3.接口的使用方式通过implements关键字进行,抽象类则是通过继承extends关键字进行!
4.在声明上
接口中只能声明抽象方法(包括静态抽象方法)和静态变量.而抽象类除了包含一般类的特点,即包括属性和一般方法外,还可以声明抽象方法(包括静态抽象方法).
5.在写法上
一、接口中的抽象方法前不用也不能加abstract关键字,默认隐式就是抽象方法,也不能加final关键字来防止抽象方法的继承.而抽象类中抽象方法前则必须加上abstract表示显示声明为抽象方法.
二、接口中的抽象方法默认是public的,也只能是public的,不能用private、protected修饰符修饰.而抽象类则可以。
6. 一个非抽象类如果extends一个抽象类后只需(并且必需)所有的实现抽象方法就行了,非抽象方法可以不实现。如果implements一个接口,就必须实现接口中的所有方法(因为接口中的方法均为抽象方法);
|