C#中抽象类和接口研究和比较.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C#中抽象类和接口研究和比较 【摘要】抽象类和接口是c#语言中两个重要的对 象引用类型,是c#程序设计使用多态性的基础,但也是初学 者容易搞混淆的两种类型,本文主要介绍了两者的概念、特 点和典型应用实例,并对两者进行比较。 【关键词】抽象类;接口;分析;区别 抽象类和接口是c#语言中两个重要的对象引用类型,是 C#程序设计使用多态性的基础,但也是初学者容易搞混淆的 两种类型,本文主要介绍了两者的概念、特点和典型应用实 例,并对两者进行比较。通过本文的介绍能使得初学者掌握 抽象类和接口概念、特点和使用场合。 一、抽象类 在类声明中使用abstract修饰符的类称为抽象类。含 有一个或一个以上的抽象成员的类,必须定义为抽象类。当 方法声明包含abstract修饰符时,称该方法为抽象方法, 虽然抽象方法同时隐含为虚拟方法,但是它不能有virtual 修饰符。声明中包含abstract修饰的属性称为抽象属性。 抽象方法或属性没有方法体或属性访问器。抽象类只能是其 他类的基类,抽象类不能实例化,必须在继承中实现。抽象 类中可以包含非抽象成员。抽象类的目的是提供一个合适的 基类,以派生其他的类。使用抽象类的好处之一是,当要求 组建新版本时,可根据需要将附加方法添加到基类。如下例: 抽象类应用实例: abstract class animal { public abstract void FoodHabits (); } class Carnivorous : animal { public override void FoodHabits () { Console. WriteLine (食肉动物只吃肉! ”); } } class Herbivorous : animal { public override void FoodHabits () { Console. WriteLine (食草动物只吃素! ”); } } class Program { static void Main (string[] args) { Carnivorous al 二 new Carnivorous (); Herbivorous a2 = new Herbivorous (); al.FoodHabits (); o2.FoodHabits (); Console?ReadLine (); 从上面的例子可以看出在程序中声明了一个抽象类 animal,在该类中声明了 一个抽象方法FoodHabits (),该 方法没有形参,无返回值。Carnivorous和Herbivorous是 animal的派生类,在这两个派生类中必须重写FoodHabits O方法,否则会发生编译错误,重写方法的关键字是 override0在主函数中不可以创建基类animal的实例,但 可以将实现抽象类的对象赋给抽象类的对象。 二、接口 在C#中类只能实现“单一继承”,要实现多重继承,必 须使用接口。一个接口定义一个协定,实现接口的类或结构 必须遵守其协定。接口可以从多个基接口继承,而类或结构 可以实现多个接口中。接口声明可以声明零个或多个成员, 接口的成员必须是方法、属性、事件或索引器。接口不以包 含常数、字段、运算符、实例构造函数、析构函数或类型, 也不能包含任何种类的静态成员。接口本身不提供它所定义 的成员的实现,接口只指定实现该接口的类或接口必须提供 的成员。所有接口成员都隐式地具有public访问权限。类 可以从单个类继承但可以实现多个接口,实现接口的类需要 实现接口的所有成员。接口可以从现有接口中继承,一个实 现接口的类也实现它的继承接口的基类接口。 虽然不能创建接口对象,但可以声明接口变量,接口变 量必须指向一个实现了接口的类的对象。如下例中的 TypeUse[]t=new TypeUse[4];声明了 一个接口类型的数组, 它包含4个接口类型的变量。以下语句声明了类的对象,并 实例化,接口变量(接口数组元素)指向类的对象。 Teacher teal = new Teacher (李静”,30, “语 文”); Student stul 二 new Student (陈丽”,16); Teacher tea2 = new Teacher ( “ 吴江” ,36, 数学”); Student stu2 二 new Student (王强”,15); t[0] = teal; t[1] = stul; t [2_ — tea2 ; t [3] = stu2; 以上语句说明不同类型的对象被分配给一个接口引用。 以下程序中应用程序通过接口引用数组调用Showinfo方法, 并返回结果,在Showinfo方法中引用Type属性和调用 TellAboutSelf方法,不同

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档