浅谈抽象类与接口的差别

浅谈抽象类与接口的区别

最近发现在面试之中,时常有人会问到抽象类与接口的区别,于是便上网查阅了一些资料,在这里做一个总结,方便日后查阅。

抽象类和接口是在程序中经常会用到的,这里我详细讲解下它们的异同点。

抽象类:

     定义

     抽象类是一个特殊的类,是类的抽象概述,可以在它里面定义成员方法但却不必去实现,反 映的是事物的内部共性。

    主要特点

1.  抽象类不能被实例化,必须通过子类来实现

2.      抽象类不能被密封

接口:

     定义

     接口是包含一组虚方法的抽象类型,它声明的方法没有任何实现,接口是为了满足外部调用而定义的一个功能约定,因此其反应的是事物外部特性

     主要特点

1.  接口不能被实例化,须由派生类去实现其声明的方法

2.      接口可以多重实现,一个类可以继承多个接口

3.      可以用于回调

4.      接口中不能包含常量、字段(域)、构造函数、析构函数、静态成员

看下它们的异同点

·        相同

ü  两者都不能实例化

ü  两者都包含未实现的方法声明

ü  都必须通过继承来实现其定义的方

·        不同点

ü  接口可以多重实现,而抽象类单继承

ü  派生类实现抽象类中未实现的方法,接口则是实现所有方法

ü  接口是定义一个行为的规范或规定,抽象类用于部分实现一个类

ü  部分接口只能定义属性、索引器、事件和方法声明,不能包含字段,而抽象类可以

ü  接口反应的是事物的外部特性,而抽象类反应的是事物的内容共性