C#抽象类和接口的区别.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
注意!我在这里所描述的抽象类和接口是基于C#的。 一、抽象类 抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。 抽象类实例 ?1??? public abstract class A ?2??? { ?3??????? private int? num = null; ?4 ?5??????? public int? Num ?6??????? { ?7??????????? get { return num; } ?8??????????? set { num = value; } ?9??????? } 10 11??????? public virtual int? getNum() 12??????? { 13??????????? return num; 14??????? } 15 16??????? public void setNum(int? n) 17??????? { 18??????????? this.num = n; 19??????? } 20 21??????? public abstract void F(); 22??? } 23 24??? public abstract class B:A 25??? { 26??????? //public override void F() 27??????? //{ 28??????? //??? throw new Exception(The method or operation is not implemented.); 29??????? //} 30 31??????? public abstract void E(); 32??? } 33 34??? public class C : B 35??? { 36??????? private C() 37??????? { 38??????? } 39 40??????? public override void E() 41??????? { 42??????????? throw new Exception(The method or operation is not implemented.); 43??????? } 44 45??????? public override void F() 46??????? { 47??????????? C c = new C(); 48??????????? throw new Exception(The method or operation is not implemented.); 49??????? } 50??? } 二、接口 接口是引用类型的,类似于类,更和抽象类有所相似,以至于很多人对抽象类和接口的区别比较模糊。和抽象类的相似之处有三点: 1、不能实例化; 2、包含未实现的方法声明; 3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员); 接口有如下特性: 接口除了可以包含方法之外,还可以包含属性、索引器、事件,而且这些成员都被定义为公有的。除此之外,不能包含任何其他的成员,例如:常量、域、构造函数、析构函数、静态成员。 一个类可以直接继承多个接口,但只能直接继承一个类(包括抽象类)。 接口实例 ?1??? public delegate void Del(); ?2??? public interface ITest ?3??? { ?4??????? //int ?a = null; ?5 ?6??????? int A ?7??????? { ?8??????????? get; ?9??????? } 10 11??????? void Test(); 12??????? event Del OnDel; 13??????? int this[int index] 14??????? { 15??????????? get; 16??????????? set; 17??????? } 18??? } 注意!还有另外一种类不能被实例化: 所有构造函数都被标记为private,这种类也是不能被实例化的,严格的说是不能在类外被实例化, 可以在此类的内部实例化(这种方式可以用于实现单件设计模式)。注意一点,这样的类也不能够作为基类来继承。 三、抽象类和接口的使用 抽象类用于部分实现一个类,再由用户按需求对其进行不同的扩展和完善;接口只是定义一个

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档