版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章面向对象的关键技术在第4章中学习了面向对象的基础知识,本章继续深入学习面向对象思想的3个核心要素,即封装、继承与多态。它们构成了面向对象程序设计思想的基础,通过这些基础可以最大程度地实现代码的重用,有效地降低了软件的复杂性,在本章中将进行详细讲解。5.1类的封装封装性是面向对象编程的特征之一。它面对用户简化了内部实现的细节,将描述客观事物的一组数据和操作组装在一起,对外提供特定的功能。这仿佛就是一个黑箱,并不需要去了解实现的细节。在本节中,将介绍封装的用途和实现。5.1.1封装的用途在生活中,使用一些东西的时候,根本不知道它的功能到底是如何实现的,但是能用好它提供的功能。可以说,这样的东西进行了实现功能过程的封装。在计算机程序中,也有封装,它将抽象得到的数据和行为(或功能)相结合,形成了一个有机的整体,然后提供给用户。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是通过外部接口调用功能。5.1.2封装的实现将对象进行封装,并不等于是将整个对象完全包裹起来,而是根据实际需要,设置一定的访问权限,用户根据不同的权限调用对象提供的功能。在C#语言中,可以使用修饰符public、internal、protected、private分别修饰类的字段、属性和方法。下面通过实例来介绍类的封装性在实际中的应用。5.2类的继承在面向对象编程的思想中,继承是面向对象程序设计中实现代码重用的重要机制之一,是OOP编程的核心之一。它起源于现实世界中事物之间的联系,因为现实世界中事物之间不是相互孤立的,它们具有共同的特征,但是又有内在的部分差别。继承类之间就反映了这样的关系。当一个类需要用到另外一个类的大部分方法和属性,但又有自己特有的方法和属性时,就可以使用继承这一特性。本节将介绍有关继承的知识。5.2.1继承的用途继承就是要实现代码重用,为了提高软件模块的可复用性和可扩充性。继承是从已知的类派生成新类的一种方式,任何类都可以被另外一个类继承。在面向对象编程中,被继承的类称为子类的父类或基类。C#语言中虽然提供了类的继承机制,但只支持单继承,不支持多重继承,即在C#语言中一个类只能从一个基类派生。5.2.2继承的实现可以适应不同的应用要求,这也是继承的目的,同时又是它的优点。程序开发人员可以在已有类的基础上构造新类,并且构造出的新类完全拥有已有类的所有特征。利用继承类机制,就可以通过增加、修改类中的方法对类进行扩充,例如实现多态。5.3类的多态多态是面向对象编程思想的核心之一。多态的意思是:当从父类派生了一些子类后,每个子类都由不同的代码实现。因此,同样的调用可以产生不同的效果,主要由子类来决定。在程序运行时,面向对象的语言会自动判断对象的派生类型,并调用相应的方法,本节将介绍多态的相关知识。5.3.1多态的用途使用多态,能实现程序通用性,提高代码的重用率。多态可以很逼真地描述客观世界,使应用程序可以完美地满足用户的要求,这就是OOP思想优秀的地方。5.3.2多态的实现在本节中,将实现一个比较经典的多态例子。在基类中派生一些类,然后调用派生类中的方法。这些方法实现不同的功能,这样就能很好地体现多态。这里有个技巧:在派生类中使用重载方法,这样表现的多态性更为直观。5.4一种特殊的类--接口
C#语言不支持多重继承,因为多重继承增加了语言实现的复杂度,但是多重继承的确可以带来非常灵活的设计。为了保留像C++那样因为具备多重继承而带来的灵活性,C#就提出了接口概念,通过接口可以实现与多重继承等价的功能。接口的实质就是定义规则,接口的实现交由其他类负责,本节主要对接口进行介绍。5.4.1接口的概念接口,英文名称“Interface”,看起来就是“界面”的意思。界面,是两个有界事物的交界处,通过界面可以与对方交互。交互的方式由约定产生,这种约定就是某具体交互动作的规则,只要遵循规则即可与拥有规则的事物交互。5.4.2声明接口接口声明的语法格式如下所示。01 修饰符interface接口名称:继承的接口列表02 {03 //接口的实现代码04 }其中,除interface和接口名称外,其他的都是可选项。下面是一个声明接口的例子,代码如下所示。01 publicinterfaceiInterface02 {03 voidfnDemo();04 }5.4.3接口的成员和声明接口的成员有从基接口继承来的成员、由接口本身声明的成员。当声明接口的时候,它的成员数量是不限的,可以有0个,也可以是多个。但是,在接口的成员中,只能是方法、属性、事件或索引器。它的成员不能包含常数、字段、运算符、实例构造函数、析构函数或类型,也不能包含任何种类的静态成员。所有的接口成员都是公有的,也就是说不用写出public访问属性了,它就是默认的,是隐式的。特别要注意的是在声明接口成员时,如果包含任何修饰符,都会出现错误。5.4.4接口的实现很多初学者一提到接口,就谈虎色变。其实接口的本质就是一些方法。但是要使用这些方法必须按一定的规则,否则就不能使用。例如,生活中的电灯开关就是一个接口,它的开和关就是两个方法,要使用开关,就必须按开关的规则操作。5.5抽象类的声明和使用抽象类和接口有一些相似之处,它们都包含由派生类继承的成员,接口和抽象类都不能直接实例化。抽象类可以拥有抽象成员,但是它不能直接被实例化,并且没有代码体,它的执行方法是在其派生类中实现的。5.6域和属性域也叫成员变量,它可以用来保存类的各种信息。域可以分为静态域和实例域两种,其中,静态域属于类,而实例域属于对象。属性是一种用来访问对象的特殊成员。在本节中,就介绍域和属性的相关内容。5.6.1域的用途域是C#语言中不可缺少的一部分,相当于C#语言中的简单成员变量,但是它表示与对象或类相关联的变量。域表示存储位置,可以用它来保存类的各种数据信息。它还有一个重要的用途,即引入一个或多个给定类型的域。5.6.2域的声明因为域其实就是一种变量,所以它的声明和变量是一样的,声明时可用的修饰符有new、public、protected、internal、private、static和readonly等。和声明变量一样,声明多个类型相同的域可以放在一起。例如,privateinta、privateintb、privateintc等同于privateint
a,b,c。域又可以分为静态域和实例域。当域的声明中包含static修饰符时,就是静态域;如果域的声明不包含static修饰符,就是实例域。5.6.3属性的用途属性其实质就是用于访问对象或类的特性的成员。属性是成员的扩展,它们都是关联类型的命名成员,所以访问成员和属性的语法是完全相同的。属性虽然与成员有许多的相似,但是也有自己的一些特点。属性不表示具体的存储位置,它提供了一种机制,它把读取和写入对象的某些特性与一些操作关联起来,例如它的get和set访问器。程序员可以像使用公共数据成员一样使用属性。5.6.4属性的声明属性在类模块内通过以下方式声明。访问级别属性的类型属性的名称{get //get访问器{}set //set访问器{}}5.7认识匿名方法匿名方法的作用就是将代码块当做参数使用,使代码对于委托的实例很直接,很便利,可以减少实例化委托对系统资源的开销。匿名方法还共享了对本地语句包含的函数成员访问权限。本节将对匿名方法及其使用进行详细讲解。5.7.1什么是匿名方法如果将代码块传递在委托参数中,那么就要创建匿名方法。匿名方法非常有用,它允许一个与委托关联的代码被内联写入使用委托的地方。这种说法有点抽象,简而言之,就是可以直接将方法的代码块作为参数传给委托而不必调用方法。01 delegatevoidDel(inty); //定义一个委托02 Deld=delegate(inth) //委托调用匿名方法03 {04 //委托所调用的方法的代码05 };5.7.2匿名方法的使用匿名方法对初学者来说,光是从概念上进行理解就已经很抽象,所以这里不打算涉及过多的理论。先演示一个匿名方法的使用,让读者有一定的感性认识,再来对匿名方法的概念进行理解。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年规范化设备采购协议范例
- 2024年设备维护保养服务协议
- 2024年基站场地租赁协议模板
- 店铺出租协议文本 2024 年
- 2024泵车租赁协议定制集锦
- 2024年商业街店铺租赁协议
- 2024年专业委托信用担保服务协议
- 2024年规范化小型物流服务协议
- 2024年定制反担保保障协议
- 2024年度房产指标交易协议模板
- 安全生产治本攻坚三年行动方案(2024-2026)
- NB-T+10908-2021风电机组混凝土-钢混合塔筒施工规范
- MOOC 颈肩腰腿痛中医防治-暨南大学 中国大学慕课答案
- 标准检验指导书(SIP)-(格式模板)
- 潜油泵及潜油泵加油机讲义
- 医患沟通内容要求记录模板(入院、入院三日、术前、术后、出院)
- 第8章 腹部检查(讲稿)
- 浅谈深度教学中小学数学U型学习模式
- 湿法脱硫工艺计算书
- (医学PPT课件)NT检查规范
- 导电炭黑的用途及使用方法
评论
0/150
提交评论