一、什么是抽象类。

在面向对象的概念中,所有的对象都是通过类来描述的,反过来却不是这样的,所有的类却不都是用来描述对象的,如果一个类没有包含足够的信息来描述一个对象,这样的类就是抽象类。抽象类往往用来表征我们对问题领域进行分析、设计的出来的抽象概念,是对一系列看上去不同,但本质上相同的具体概念。我们可以构造出一个固定行为的抽象描述,但是这组行为可以有任意可能的实现方式。这里面抽象描述为抽象类,具体实现为所有可能的派生类。抽象类同时也是OCP(Open-Closed Principle)的关键。

在java中,interface和abstract class都是为了实现这样的功能。

A、语法定义上的不同。

Abstract Class可以有自己的数据成员,构造函数(这个是可以有的呀!),也可以有非抽象方法,但是interface则是只能有static final修饰的数据成员,所有的方法为abstract。

B、从设计层面上的不同。

abstract class体现的是一种继承关系,其父类和派生类的概念本质是相同的,对于interface来说,它体现的是一种功能上的规范。

C、在使用上的不同

abstract class是类,只能单继承,而接口本身继承多个接口,类可以实现多个接口。

使用abstract class可以保证层次关系,避免代码的重复,interface可以有效的分离行为和实现,为代码的维护和修改带来方便。

posted on 2017-09-30 17:47  rookie111  阅读(172)  评论(0编辑  收藏  举报