- 1、本文档共38页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用对象思考
第7章 用对象思考 在前一章,学习了.NET中的类和对象,也会用面向对象的思想来编写程序了。在面向对象编程中经常会遇到对象与对象之间消息的传递。其实在现实世界中我们发现对象之间存在更多的关系,如亲人关系、朋友关系等。在OOP中,同样需要对象之间建立关系,实现更多通信。本章将深入OOP编程,深入学习面向对象编程的更多特性。本章主要涉及到的知识点有: 继承:实现代码的复用,建立类的层次关系。 多态:理解多态原理,用抽象类和抽象方法实现多态。 接口:理解接口的定义以及应用。 了解序列化和反序列化,程序集和反射。 了解C#面向对象特性,学会使用索引、委托和事件。 7.1 用对象思考:继承 现实中存在着各种继承关系,比如动物与猫的关系、轿车与车的关系。在面向对象编程中也存在“继承”的概念,C#能够利用继承的强大机制,在面向对象编程中更好的模拟现实世界,实现更复杂的面向对象描述,实现软件中的代码复用。 7.1.1 解决代码的冗余 【本节示例参考:\源代码\chapter7\7.1.1\InheritExample】 在完成一个信息管理系统的时候,笔者把系统的使用者分为两类,一般用户和管理员,他们具有不同的权限。通过类图对比一下这两个类,如图7.1所示。 可以看到,User类和Admin类都具有相同的属性Id和Name,具有相同的方法SayHi。也就是说对于系统的使用者,两个类都具有一些相同的状态和行为。考虑到系统的扩展性,以后系统的使用者角色可能会更多,这会编写大量重复的代码,造成冗余。为了解决这个问题,下面重新创建一个新类Person,用于保存User类和Admin类公共的属性和方法,如图7.2所示。实现三个类的关系的程序如代码7-1所示。 7.1.2 建立继承模型 【本节示例参考:\源代码\chapter7\ 7.1.2\InheritExample】 在面向对象编程中,什么是继承呢?在现实世界中,继承关系是到处存在的,如用户和管理员都是人,他们都具有人的共同特性;猫和狗都是动物,都具有动物的共同特性。我们把现实中可以通过“is a”描述的关系,称作继承关系。即“管理员是人(Admin is a Person)”,“狗是动物(dog is animal)”。 C#中是如何实现继承的呢?通过“:”运算符。在声明类时,在类名称后放置一个冒号,然后在冒号后指定要从中继承的类(即基类)。例如下面的定义的类实现了“管理员是人”的关系: public class Person { //Person类成员 } public class Admin : Person { //Admin类成员 } 7.1.3 继承隐私保护 【本节示例参考:\源代码\chapter7\ 7.1.3\InheritExample】 继承可以实现不同范围的隐私保护,通过public、private、protected访问修饰符可以实现。它们的区别如图7.3所示。下面通过提出问题,解决问题的方式学习继承的访问控制。 (1)如果父类中的成员,只允许父类自己所独有,不允许子类和其他类访问,如何实现?将父亲的成员声明为private的,该成员就只能被父类本身访问,如图7.4所示。 (2)如果父类中的成员,只允许父类和其子类访问,不允许其他类访问,如何实现将父亲的成员声明为protected的,该成员就只能被父类和其子类访问,如图7.5和图7.6所示。 7.1.4 继承的特性 继承实现了类与类之间的层次关系,描述了更加丰富多彩的面向对象世界。同时,继承也具有一些特点需要了解。 (1)传递性 在信息管理系统中,用户分为一般用户和管理员,因为后台管理的需要,必须要有一个超级管理员的角色来实现整个系统的管理。这样子,系统的用户关系图如图7.7所示。在程序中的继承关系如图7.8所示。 通过这种传递的关系,SuperAdmin不仅可以共享父类Admin的公共属性和方法,同时可以共享Person类的属性和方法。 (2)单根性 在上一节已经提到了,C#中的继承是单继承的,不支持多继承。 (3)密封性 在C#中可以通过关键字sealed来修饰一个类,这样的类是不能被继承的,这种类称为密封类。 7.1.5 继承的价值 【本节示例参考:\源代码\chapter7\7.1.5\InheritExample】 继承模拟了现实世界中的关系,在OOP中强调一切皆对象,这符合面向对象的编程思想,同时,继承实现了代码的重用,减轻了程序员编写代码的负担。继承使程序的结构更加清晰,使类与类之间的关系层次机构化,更易于维护。合理地使用继承,会对程序编写带来很大帮助。最后,通过一个综合例子来完成对继承的学习。请看下面的描述: 狗是哺乳动物。狗通常的时候和人打招呼会通过‘摇摇尾巴’,在被抚摸感
您可能关注的文档
- 生殖健康助理咨询员培训第二讲生殖健康咨询职业道德.ppt
- 生气时变成恐龙的我现在谁都不认得谁都不喜欢了.ppt
- 生气通天论.ppt
- 生活与哲学.ppt
- 生活与哲学ppt.ppt
- 生活与哲学会考说明唯物论部分试题.ppt
- 生活与哲学全书基本框架.ppt
- 生活与哲学全套复习.ppt
- 生活与哲学第课创新意识与社会进步.ppt
- 生活与哲学系列微课之认识理论真理和科学理论的关.ppt
- DB23_T 3866-2024冰上龙舟赛事组织服务规范.docx
- DB32 2163-2012 棉纱单位可比综合电耗限额及计算方法.docx
- DB32∕T 2429-2013 棉花田间生长发育观察记载规范.docx
- DB23_T 3820-2024 工业互联网综合平台数据质量管理规范.docx
- DB23_T 3474-2023非煤智慧矿山信息系统技术规范.docx
- DB3201_T 1106-2022 工程地质层划分技术规范.docx
- DB33T 2515-2022公共机构“零碳”管理与评价规范.docx
- DB3301_T 0415-2023 装修垃圾收运处置管理规范.docx
- DB3311/T 106―2019“丽水山居”民宿服务要求与评价规范.docx
- DB3201T 1127-2022 慈善捐赠受赠管理规范.docx
最近下载
- 丁字帐 报表自动生成.xls
- (统编版2025)历史七年级下册新教材变化及教学建议.pptx
- 2025年江苏地区普通高校对口单招《语文》考试大纲 .pdf VIP
- 液压自动定心中心架设计与加工设计文档.doc VIP
- 银行财务报表分析:学习如何阅读与分析银行的财务报表.pptx VIP
- 部编版六年级语文上册《变形记》PPT精品课件.pptx VIP
- 2024年广州外国语学校小升初分班考试数学模拟试卷附答案解析.docx VIP
- 2025北京舞蹈学院招聘5人(第二批)考试备考试题及答案解析.docx VIP
- 四川省擬任县处级领导干部模拟试题第1套题及答案隐.doc VIP
- 妇幼保健院科研(临床研究)使用医疗数据审批程序.docx VIP
文档评论(0)