接口和抽象类区别

接口和抽象类区别

ID:20301084

大小:72.00 KB

页数:23页

时间:2018-10-11

接口和抽象类区别_第1页
接口和抽象类区别_第2页
接口和抽象类区别_第3页
接口和抽象类区别_第4页
接口和抽象类区别_第5页
资源描述:

《接口和抽象类区别》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、接口和抽象类的区别3.1相同点都不能被直接实例化,都可以通过继承实现其抽象方法。都是面向抽象编程的技术基础,实现了诸多的设计模式。3.2不同点接口支持多继承;抽象类不能实现多继承。接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。接口可以用于支持回调;抽象类不能实现回调,因为继承不支持。接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法。接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。例如,Struct就可

2、以继承接口,而不能继承类。通过相同与不同的比较,我们只能说接口和抽象类,各有所长,但无优略。在实际的编程实践中,我们要视具体情况来酌情量才,但是以下的经验和积累,或许能给大家一些启示,除了我的一些积累之外,很多都来源于经典,我相信经得起考验。所以在规则与场合中,我们学习这些经典,最重要的是学以致用,当然我将以一家之言博大家之笑,看官请继续。3.3规则与场合请记住,面向对象思想的一个最重要的原则就是:面向接口编程。借助接口和抽象类,23个设计模式中的很多思想被巧妙的实现了,我认为其精髓简单说来就是:面向抽象编程。抽象类应主要用于关系密切的对象,而接口最适合为

3、不相关的类提供通用功能。接口着重于CAN-DO关系类型,而抽象类则偏重于IS-A式的关系;接口多定义对象的行为;抽象类多定义对象的属性;接口定义可以使用public、protected、internal和private修饰符,但是几乎所有的接口都定义为public,原因就不必多说了。“接口不变”,是应该考虑的重要因素。所以,在由接口增加扩展时,应该增加新的接口,而不能更改现有接口。尽量将接口设计成功能单一的功能块,以.NETFramework为例,IDisposable、IDisposable、IComparable、IEquatable、IEnumera

4、ble等都只包含一个公共方法。接口名称前面的大写字母“I”是一个约定,正如字段名以下划线开头一样,请坚持这些原则。在接口中,所有的方法都默认为public。如果预计会出现版本问题,可以创建“抽象类”。例如,创建了狗(Dog)、鸡(Chicken)和鸭(Duck),那么应该考虑抽象出动物(Animal)来应对以后可能出现风马牛的事情。而向接口中添加新成员则会强制要求修改所有派生类,并重新编译,所以版本式的问题最好以抽象类来实现。从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实实现。对抽象类不能使用new关键字,也不能被密封,原因是抽象类不能被

5、实例化。在抽象方法声明中不能使用static或virtual修饰符。*************************************************************************************************************************************************************我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为

6、程序员,一定经常听到“面向接口编程”这个短语,那么它是什么意思?有什么思想内涵?和面向对象编程是什么关系?本文将一一解答这些疑问。1.面向接口编程和面向对象编程是什么关系首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一。2.接口的本质接口,在表面上是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或其他接口所实现(或者也可以说继承)。它在形式上可能是如下的样子:interfaceInterfaceName{v

7、oidMethod1();voidMethod2(intpara1);voidMethod3(stringpara2,stringpara3);}那么,接口的本质是什么呢?或者说接口存在的意义是什么。我认为可以从以下两个视角考虑:1)接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了自然界“如果你是……则必须能……”的理念。例如,在自然界中,人都能吃饭,即“如果你是人,则必须能吃饭”。那么模拟到计算机程序中,就应该有一个IPerson(习惯上,接口名由“I”开头)接口,并有一个方法叫Eat(),然后我们规定,每一个表示“人”的类,

8、必须实现IPerson接口,这就模拟了自然界“如果你是人,则必须能

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。