Java思维---区分抽象类与接口

18 阅读1分钟

一、设计目的

abstract class与interface两者本身的设计目的是不同的。

接口的设计目的,是对类的行为进行约束。它只约束了行为的有无,但不对如何实现行为进行限制。

抽象类的设计目的,是代码复用。在抽象类中实现方法,避免让所有的子类来实现此方法,达到代码复用的目的。


二、内容角度

接口是对事物的行为进行抽象,针对的是行为。

抽象类是对具体事物的抽象,针对的是具体事物。


三、关系角度

继承是一个 "是不是"的关系。 接口实现则是 "有没有"的关系。

如果一个类继承了某个抽象类,则子类必定是抽象类的种类。

而接口实现则是有没有、具备不具备的关系。有接口中的行为则可以实现这个接口,没有就不实现这个接口。