一、区别
interface:只有方法没有具体实现 方法只能是public或者不写默认为public ;
变量全为final——不可修改。即接口本身的特性规定了只能定义常量,否则实现的子类a改变了其定义的值,那么其他实现类的值都将随之变化,这样就成了抽象类的特征了,失去了接口更高级的抽象意义。
abstract class:方法可以有具体实现,或者是abstract抽象方法
接口就是一个抽象类,没有变量和方法实现。如果一个抽象类所有的方法都是抽象的就可以将此类用接口来定义。
二、优点
interface:主要针对于功能、动作。将拥有这些动作的类实现此接口如:鸟、飞机都能fly();
体现了开闭原则:对修改关闭,对扩展开放;
abstract class:将拥有共同属性 特征的类继承此类,父类中添加新方法时子类将全部拥有而不用逐一去新增。
当子类拥有父类中的特性是便可以去extends,体现了代码的复用性。继承——灵活性;实现——严谨性;