- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * 第八章 抽象的艺术 理论内容 抽象类 接口 抽象类与接口的区别 8.1 抽象类 抽象类的用途是提供一个可供多个派生类共享的通用基类定义。 请举例生活中的抽象类,并说明如何判断其是抽象类。 抽象类的概念 一个类中没有包含足够能描述具体对象的信息,我们就称其为抽象类。 C#中的抽象类与普通类的区别是抽象类可以包含抽象方法。 C#中使用abstract关键字来定义抽象类。 abstract class 类名 { } 抽象类的使用 abstract class Appliance { public abstract void Charge(); } class Computer: Appliance { public override void Charge() { Console.WriteLine(电脑使用220V电压充电!); } } 在C#中,非抽象子类必须重写父类抽象方法。 定义充电方法为抽象方法 子类重写充电方法 演示:创建电脑和手机对象并调用充电方法 抽象类的使用 在C#中使用抽象类要注意以下要点: 1. 抽象类可以不包含抽象方法,但是含有抽象方法的类必须定义为抽象类。 2. 抽象方法不允许有方法体。 3. 子类继承于抽象类时必须重写抽象类中所有的抽象方法,除非子类也是抽象类。 4. 抽象类不允许直接实例化,只能实例化其非抽象子类对象。 抽象类的使用 1. 抽象类可以不包含抽象方法,但是含有抽象方法的类必须定义为抽象类。 抽象类的使用 2. 抽象方法不允许有方法体。 抽象类的使用 3. 子类继承于抽象类时必须重写抽象类中所有的抽象方法,除非子类也是抽象类。 抽象类的使用 4. 抽象类不允许直接实例化,只能实例化其非抽象子类对象。 抽象方法和虚方法的区别 抽象方法和虚方法都是为了实现多态功能。其主要区别在于:抽象方法只提供一个功能名称,要求子类必须实现该功能。而虚方法不只提供功能名称还提供了默认实现方式,子类可以不重新实现该功能。 抽象方法 虚方法 使用abstract关键字修饰 使用virtual关键字修饰 只能定义在抽象类中 可以定义在除密封类外的类中 不允许有方法体 必须有方法体 子类必须重写 子类可以重写 8.2 接口 生活中的接口 接口本身是没有任何具体功能的,其主要职责是可以连接任何实现 了该接口的设备。在软件开发中使用接口的目的也是如此。 接口的概念 C#中子类最多只允许一个父类。 演示:文艺兵类继承士兵类和演员类的结果 违反了继承的规则 接口的概念 通过分析,文艺兵是属于士兵的一个分支,所以文艺兵继承士兵类,同时又具有演员的“表演”功能,所以我们可以把“表演”单独定义成接口,再让文艺兵实现该接口。 class Soldier { public void Training() { Console.WriteLine(开始训练!); } } interface IPerformance { void Show(); } class CivilianSoldier : Soldier, IPerformance { } 演示:创建文艺兵对象,并调用训练和表演方法 定义士兵类 定义表演接口 继承士兵类并实现表演接口 自定义接口 自定义接口时需要注意: (1)接口名一般使用大写字母“I”开头,表明其是接口类型。 (2)接口可包含方法、属性、事件和索引器,但不能包含字段。 (3)接口中定义的成员不允许有具体实现。 (4)接口中的成员不允许加任何访问修饰符。 [访问修饰符] interface 类名 { } .NET平台提供的接口 排序接口——IComparable .NET平台提供的接口 //定义Person类 class Person { //代码略 } //创建三个Person对象存入集合中排序 static void Main(string[] args) { //创建集合并添加三个Person对象 //排序 list.Sort(); //显示排序结果 } 在C#中,非抽象子类必须重写父类抽象方法。 定义Person类 创建Person集合并排序 演示:集合中存储自定义对象排序的错误提示 .NET平台提供的接口 class Person: IComparablePerson { //其他代码略 public int CompareTo(Person other) { return this.Age.CompareTo(other.Age); } } Person类实现IComparable接口 实现排序接口 根据年龄升序
您可能关注的文档
最近下载
- 基于“教、考、评”一致性的高中语文阅读教学策略.pptx VIP
- 最新土工击实、液塑限、颗粒分析自动计算表.xls VIP
- 学前教育评价第二版教学课件完整版.pptx
- MB670-1掘锚机结构原理及操作方法.pptx VIP
- 中国人民大学-BK138A网络、群体与市场.doc VIP
- 岩土工程勘察规范(GB 50021-2009).pdf VIP
- 2025年统编版语文四年级上册语文单元备课.pdf VIP
- 西方人类学发展史的再认识与中国人类学的未来.doc VIP
- 导航控制系统(NCS)系列:Saab Avionics ELSIN-300_(9).软件更新与版本管理.docx VIP
- 产后保健服务技术规范.pdf VIP
文档评论(0)