接口是强制性的,他的所有方法都要实现
但是抽象类不是
比如说一个接口,你只用到其中的一两个方法,可是如果直接实现接口需要实现里面的五个方法,这时候你可以先让抽象类实现接口,然后你的类继承接口,就不需要都实现接口的方法了
而且接口的抽象层次要更高,是一种契约,抽象类是提供了很多的方法,给你用,没有强制性
=================================================================================
抽象类,is a 的关系
接口,can do 的关系
为什么抽象类还要实现接口,其实就是上面的原因。
一个抽象类,继承体系说明它是一个什么东西,而接口,说明它能干什么。
用接口来规范一系列抽象类的行为。
而抽象类又可以在其子类上做扩展,而不影响其基类的接口。
简单理解来说:
动物,抽象类, 继承于 消耗能量的接口。
汽车,抽象类, 继承于 消耗能量的接口。
动物本身可能有些扩展的方法,和汽车又是不同的。都继承一个接口,并不能满足类的扩展性的要求。
nnd,越解释越麻烦。。
我的理解,类继承是纵向的,接口继承是横向的。纵向横向都要发生变化,隔离变化, 抽象类继承接口
=================================================================================