面向对象编程中接口与抽象类的比较
2011-07-31 18:33
344 查看
在面向对象编程中,有两个特殊也是比较难理解的概念,就是接口和抽象类。对于概念不再赘述,可以查阅相关文档。本文重点就接口和抽象类的异同点进行比较,并说明各自的应用环境。
接口和抽象类之所以特殊,是因为它们有一个不同于一般类的共同特点,在接口和抽象类中可以只写方法而没有具体实现(在接口中绝对不能有具体实现,在抽象类中没有具体实现的方法叫做抽象方法)。至于为什么要有没有具体实现的方法在浅析接口的作用及应用一文中以有介绍。下面主要介绍接口和抽象类的异同点及其各自应用的环境。
在某种程度上接口想一个抽象类,或者可以说接口是一个“纯的抽象类”。因为在接口和抽象类中,都可以不用有方法的具体实现(接口中是不能有),不同的是,在抽象类中非抽象方法是有具体实现的。
接口和抽象类还有一个很重要的不同点就是:类可以继承多个接口,但是只能继承一个抽象类。
接口和抽象类的不同之处决定了各自有各自的最佳应用环境:
1. 如果预计要创建组件的多个版本,则创建抽象类。因为可以通过更新基类,使所有继承类都自动更新。而接口一般要求在定义后就不能更改,这样是为了保护为使用接口而编写的现有系统。
2. 如果要设计小而简练的功能块,则使用接口;若果要设计大的功能单元,则使用抽象类。因为接口设计往往应该小而且独立,减少发生性能问题的可能性;
3. 如果要在组件的所有实现间提供通用的已实现的功能,则使用抽象类;因为抽象类可以部分实现方法;而接口不能;
4. 若果创建的功能将在大范围的完全不同的对象间使用,则使用接口。
接口和抽象类之所以特殊,是因为它们有一个不同于一般类的共同特点,在接口和抽象类中可以只写方法而没有具体实现(在接口中绝对不能有具体实现,在抽象类中没有具体实现的方法叫做抽象方法)。至于为什么要有没有具体实现的方法在浅析接口的作用及应用一文中以有介绍。下面主要介绍接口和抽象类的异同点及其各自应用的环境。
在某种程度上接口想一个抽象类,或者可以说接口是一个“纯的抽象类”。因为在接口和抽象类中,都可以不用有方法的具体实现(接口中是不能有),不同的是,在抽象类中非抽象方法是有具体实现的。
接口和抽象类还有一个很重要的不同点就是:类可以继承多个接口,但是只能继承一个抽象类。
接口和抽象类的不同之处决定了各自有各自的最佳应用环境:
1. 如果预计要创建组件的多个版本,则创建抽象类。因为可以通过更新基类,使所有继承类都自动更新。而接口一般要求在定义后就不能更改,这样是为了保护为使用接口而编写的现有系统。
2. 如果要设计小而简练的功能块,则使用接口;若果要设计大的功能单元,则使用抽象类。因为接口设计往往应该小而且独立,减少发生性能问题的可能性;
3. 如果要在组件的所有实现间提供通用的已实现的功能,则使用抽象类;因为抽象类可以部分实现方法;而接口不能;
4. 若果创建的功能将在大范围的完全不同的对象间使用,则使用接口。
相关文章推荐
- 抽象类和接口区别比较
- php面向对象编程:抽象类与接口的区别
- 抽象类与接口的比较
- 抽象类和接口的比较
- java 抽象类和接口比较
- 疯狂JAVA讲义-接口和抽象类比较
- (转)java中抽象类与接口的比较
- 正规军与土八路的较量(抽象类与接口比较分析)
- 抽象类和接口的比较(面试题)
- 抽象类与接口的比较
- C#温故而知新学习系列之面向对象编程—接口和抽象类的区别是什么?(十八)
- 接口和抽象类的比较
- 面向对象编程——接口类和抽象类(九)
- Java中的接口与抽象类的比较、应用和实例 – 一个培训师不错的简洁解述
- Java C++ 比较 – 虚函数、抽象函数、抽象类、接口
- 抽象类与接口的比较
- 抽象类和接口的比较
- C#接口和抽象类的比较
- C++虚函数与JAVA中抽象函数比较 接口与抽象类比较
- 【转载】Java中的接口和抽象类的形象比较