旗下导航:搜·么
当前位置:网站首页 > .Net教程 > 正文

C#中抽象类和接口的区分【C#.Net教程】,C#,抽象类,接口

作者:搜教程发布时间:2019-11-27分类:.Net教程浏览:45评论:0


导读:人人都轻易把这两者搞混,我也一样,在听李建忠先生的设想形式时,他也老把笼统类说成接口,弄的我就更糊涂了,所以找了些网上的材料.一、笼统类:笼统类是特别的类,只是不能被实...
人人都轻易把这两者搞混,我也一样,在听李建忠先生的设想形式时,他也老把笼统类说成接口,弄的我就更糊涂了,所以找了些网上的材料.
一、笼统类:
笼统类是特别的类,只是不能被实例化;除此以外,具有类的其他特征;重要的是笼统类可以包括笼统要领,这是一般类所不能的。笼统要领只能声明于笼统类中,且不包括任何完成,派生类必需掩盖它们。别的,笼统类可以派生自一个笼统类,可以掩盖基类的笼统要领也可以不掩盖,假如不掩盖,则其派生类必需掩盖它们。

二、接口:
接口是援用范例的,相似于类,和笼统类的相似之处有三点:
1、不能实例化;
2、包括未完成的要领声明;
3、派生类必需完成未完成的要领,笼统类是笼统要领,接口则是一切成员(不仅是要领包括其他成员);

别的,接口有以下特征:
接口除了可以包括要领以外,还可以包括属性、索引器、事宜,而且这些成员都被定义为公有的。除此以外,不能包括任何其他的成员,比方:常量、域、组织函数、析构函数、静态成员。一个类可以直接继续多个接口,但只能直接继续一个类(包括笼统类)。

三、笼统类和接口的区分:
1.类是对对象的笼统,可以把笼统类明白为把类看成对象,笼统成的类叫做笼统类.而接口只是一个行动的范例或划定,微软的自定义接口老是后带able字段,证实其是表述一类类“我能做。。。”.笼统类更多的是定义在一系列严密相干的类间,而接口大多数是关联松散但都完成某一功用的类中.
2.接口基础上不具有继续的任何详细特性,它仅仅许诺了可以挪用的要领;
3.一个类一次可以完成若干个接口,然则只能扩大一个父类
4.接口可以用于支撑回调,而继续并不具有这个特性.
5.笼统类不能被密封。
6.笼统类完成的详细要领默以为虚的,但完成接口的类中的接口要领却默以为非虚的,固然您也可以声明为虚的.
7.(接口)与非笼统类相似,笼统类也必需为在该类的基类列表中列出的接口的一切成员供应它自己的完成。然则,许可笼统类将接口要领映射到笼统要领上。
8.笼统类完成了oop中的一个准绳,把可变的与不可变的星散。笼统类和接口就是定义为不可变的,而把可变的坐位子类去完成。
9.好的接口定义应该是具有专注功用性的,而不是多功用的,不然形成接口污染。假如一个类只是完成了这个接口的中一个功用,而不得不去完成接口中的其他要领,就叫接口污染。
10.只管防止运用继续来完成组建功用,而是运用黑箱复用,即对象组合。由于继续的条理增加,形成最直接的效果就是当你挪用这个类群中某一类,就必需把他们悉数加载到栈中!效果可想而知.(连系客栈道理明白)。同时,故意的朋侪可以留意到微软在构建一个类时,许多时刻用到了对象组合的要领。比方asp.net中,Page类,有Server Request等属性,但实在他们都是某个类的对象。运用Page类的这个对象来挪用别的的类的要领和属性,这个是异常基础的一个设想准绳。
11.假如笼统类完成接口,则可以把接口中要领映射到笼统类中作为笼统要领而没必要完成,而在笼统类的子类中完成接口中要领.

四、笼统类和接口的运用:
1. 假如估计要建立组件的多个版本,则建立笼统类。笼统类供应简朴的要领来掌握组件版本。
2.假如建立的功用将在大范围的全异对象间运用,则运用接口。假如要设想小而精练的功用块,则运用接口。
3.假如要设想大的功用单位,则运用笼统类.假如要在组件的一切完成间供应通用的已完成功用,则运用笼统类。
4.笼统类重要用于关联密切的对象;而接口适合为不相干的类供应通用功用。

以下是我在网上看到的几个抽象比方,真的异常不错,呵呵:
1.飞时机飞,鸟会飞,他们都继续了同一个接口“飞”;然则F22属于飞机笼统类,鸽子属于鸟笼统类。
2. 就像铁门木门都是门(笼统类),你想要个门我给不了(不能实例化),但我可以给你个详细的铁门或木门(多态);而且只能是门,你不能说它是窗(单继续);一个门可以有锁(接口)也可以有门铃(多完成)。 门(笼统类)定义了你是什么,接口(锁)划定了你能做什么(一个接口最好只能做一件事,你不能请求锁也能发出声音吧(接口污染))。

以上就是C#中笼统类和接口的区分 的内容,更多相干内容请关注ki4网(www.ki4.cn)!

标签:C#抽象类接口


欢迎 发表评论: