抽象类和接口的区别
Posted rookie111
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽象类和接口的区别相关的知识,希望对你有一定的参考价值。
一、什么是抽象类。
在面向对象的概念中,所有的对象都是通过类来描述的,反过来却不是这样的,所有的类却不都是用来描述对象的,如果一个类没有包含足够的信息来描述一个对象,这样的类就是抽象类。抽象类往往用来表征我们对问题领域进行分析、设计的出来的抽象概念,是对一系列看上去不同,但本质上相同的具体概念。我们可以构造出一个固定行为的抽象描述,但是这组行为可以有任意可能的实现方式。这里面抽象描述为抽象类,具体实现为所有可能的派生类。抽象类同时也是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可以有效的分离行为和实现,为代码的维护和修改带来方便。
以上是关于抽象类和接口的区别的主要内容,如果未能解决你的问题,请参考以下文章