浅谈抽象类与接口的差别
浅谈抽象类与接口的区别
最近发现在面试之中,时常有人会问到抽象类与接口的区别,于是便上网查阅了一些资料,在这里做一个总结,方便日后查阅。
抽象类和接口是在程序中经常会用到的,这里我详细讲解下它们的异同点。
抽象类:
定义
抽象类是一个特殊的类,是类的抽象概述,可以在它里面定义成员方法但却不必去实现,反 映的是事物的内部共性。
主要特点
1. 抽象类不能被实例化,必须通过子类来实现
2. 抽象类不能被密封
接口:
定义
接口是包含一组虚方法的抽象类型,它声明的方法没有任何实现,接口是为了满足外部调用而定义的一个功能约定,因此其反应的是事物外部特性
主要特点
1. 接口不能被实例化,须由派生类去实现其声明的方法
2. 接口可以多重实现,一个类可以继承多个接口
3. 可以用于回调
4. 接口中不能包含常量、字段(域)、构造函数、析构函数、静态成员
看下它们的异同点
· 相同
ü 两者都不能实例化
ü 两者都包含未实现的方法声明
ü 都必须通过继承来实现其定义的方法
· 不同点
ü 接口可以多重实现,而抽象类单继承
ü 派生类实现抽象类中未实现的方法,接口则是实现所有方法
ü 接口是定义一个行为的规范或规定,抽象类用于部分实现一个类
ü 部分接口只能定义属性、索引器、事件和方法声明,不能包含字段,而抽象类可以
ü 接口反应的是事物的外部特性,而抽象类反应的是事物的内容共性