面向对象的编程技术 对象和属性等.ppt_第1页
面向对象的编程技术 对象和属性等.ppt_第2页
面向对象的编程技术 对象和属性等.ppt_第3页
面向对象的编程技术 对象和属性等.ppt_第4页
面向对象的编程技术 对象和属性等.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C 程序设计语言课程内容 第一章 概述第二章 C 语言的基本原理第三章 C 中对象的创建第四章 面向对象的编程技术第五章 C 编程第六章 编写基于 NET的应用程序第七章 使用ADO NET访问数据 第八章 创建基于Windows的应用程序第九章 在C 应用程序中使用XMLWebService第十章 创建Web应用程序十一章 应用程序设置和部署十二章 进阶学习目标 面向对象的编程技术 内容 设计对象继承性多态性 C 设计对象4 1 学习完本节后 你将能够 在对象中封装信息使用属性管理对封装数据的访问 封装性4 1 2 将类的某些数据和操作这些数据的代码隐藏起来 这就是封装封装的好处 可以隐藏类实现的细节简化用户的使用易于软件的更新 修订 维护 可以修改内部实现 但不影响用户的使用 访问修饰符 使用访问修饰符 可以定义应用程序中类成员的作用域 可见性 属性4 1 3 属性是 聪明 的字段 特殊 的方法定义属性类似于定义一个方法 但使用属性时如同使用一个字段 classCat publicstringname publicintage staticvoidMain Catcat1 newCat cat1 age 13 错误 创建属性4 1 3 语法 public protected数据类型属性名 get get访问器 获取属性的代码 set set访问器 设置属性的代码 创建属性4 1 3 示例 publicclassCat privateintage publicintAge get returnage set if value 20 报告出错elseage value 使用属性4 1 3 示例 Catcat1 newCat cat1 Age 1 使用Age属性的set访问器intn Cat Age 使用Age属性的get访问器cat1 Age 100 收到错误消息 属性4 1 3 如果只提供了get 没有set 这样的属性为只读属性如果只提供了set 没有get 只写属性优点 属性在使用时类似于类的字段 简单属性在实现时类似于方法 可以编写代码控制用户对数据的存 取 增加安全性检查可以设置只读或只写属性 练习 参见教材P101页4 1 4课堂练习 10分钟 编写和使用属性4 1 4 面向对象的编程技术 内容 设计对象继承性多态性 C 继承性4 2 定义基类创建派生类创建密封类 继承4 2 1 A isakindof B 猫是一只动物 阿土仔是一个人 A isakindof B 说明B是A的一个父类 A是B的子类 基类 派生类 子类无条件的接收父类具有的特性 包括属性和方法 这就叫做继承继承允许把公共的属性和方法包含在基类中得到重用 此外 子类还可以添加自己的特性利用继承 可以以现有的类为基础 创建出新的类 实现了代码的重用 继承4 2 1 继承描述了 是什么种类 isakindof 的关系派生类从基类继承属性和方法 实现了代码重用派生类变得更专门化在C 中只支持单一继承 即每个子类只能有一个父类 父类 子类 动物 派生类4 2 2 示例 动物园需要管理3种动物 羚羊 狮子 大象 publicclassAntelope publicboolIsSleeping publicvoidSleep publicvoidEat publicclassLion publicboolIsSleeping publicvoidSleep publicvoidEat publicvoidStalkPrey publicclassElephant publicboolIsSleeping publicvoidSleep publicvoidEat publicintCarrayCapacity publicclassAnimal publicboolIsSleeping publicvoidSleep publicvoidEat publicclassAntelope Animal publicclassLion Animal publicvoidStalkPrey publicclassElephant Animal publicintCarrayCapacity 派生类4 2 2 示例 publicclassAnimal protectedboolIsSleeping publicvoidSleep publicvoidEat publicclassLion Animal publicvoidStalkPrey LionadoptedLion newLion adoptedLion StalkPrey adoptedLion Eat base关键字4 2 3 base指代一个对象的父类 基类当子类中的成员与父类成员重名是 父类的成员被隐藏base的作用 点取父类中被子类隐藏了的成员变量点取被子类覆盖了的方法作为方法名表示父类的构造函数 publicAnimal publicvoidmethod1 publicclassLion Animal 将父类的同名方法隐藏publicvoidmethod1 publicLion this method1 base method1 密封类4 2 4 使用sealed关键字声明密封类密封类不允许其他类继承该类密封的方法不允许被覆盖如果你的类不希望被别人继承 修改 为安全起见 把它们定义为sealed吧 publicsealedclassMyClass classmembers 练习 参见教材P108页4 2 5课堂练习 10分钟 创建派生类4 2 5 面向对象的编程技术 内容 设计对象继承性多态性 C 多态4 3 通过在基类中使用虚方法来实现多态性创建和使用抽象类 多态性4 3 1 具有多种不同的形态 这种能力称为多态性子类继承了父类的特性 但子类在某些细节上各不相同 多种多样 如何做到这一点呢 Animal对象 Elephant Cat Mouse 行为 EatGrass EatMouse EatCheese 被调用的方法 Eat Eat Eat 编写虚方法4 3 2 如果希望某个方法的实现能够在子类中进一步得到改进 那么将方法定义为虚方法使用virtual关键字定义虚方法这样子类就可以改进从父类继承下来的Eat方法了 publicclassAnimal publicvirtualvoidEat Console WriteLine Eatsomething 编写虚方法4 3 2 如果希望改进父类的某个虚方法 使用override关键字覆盖父类的方法 提供自己的实现就可以了当覆盖虚方法时 覆盖的方法必须与被覆盖的方法具有相同的方法签名这样子类就可以有与众不同的Eat方法了 publicclassCat Animal publicoverridevoidEat Console WriteLine Eatmouse 虚方法的调用4 3 2 当调用某个虚方法时 运行时会根据具体对象的类型 动态决定调用哪个方法 publicclassAnimal publicvirtualvoidEat Console WriteLine Eatsomething publicclassCat Animal publicoverridevoidEat Console WriteLine Eatmouse AnimalmyCat newCat myCat Eat 输出 Eatmouse 多态的实现4 3 2 动物饲养员publicclassAnimalTrainer publicvoidFeedAnimal Animala a Eat staticvoidMain ElephantmyElephant newElephant CatmyCat newCat MousemyMouse newMouse AnimalTrainermarry newAnimalTrainer marry FeedAnimal myElephant EatGrassmarry FeedAnimal myCat EatMousemarry FeedAnimal myMouse EatCheese 抽象方法只有方法声明 但没有方法实现 是一个空方法抽象的方法隐式为虚方法 必须被覆盖抽象类 包含了抽象方法的类必须声明为抽象类只能被继承 但不能创建一个抽象类的对象实例使用abstract关键字定义抽象类和抽象方法如果你的某个类的方法不知道该如何实现 实现的细节是由子类决定的 那么把它定义成abstract吧 抽象方法和抽象类4 3 3 classShape publicstringname publicdoubleGetArea 抽象方法和抽象类4 3 3 思考题 为什么使用抽象方法定义一个shape类 表示各种几何图形 方法getArea 用来计算图形的面积 该如何实现这个方法呢 三角形 正方形 圆形 不同的几何图形面积的计算公式不同 显然在这里没法实现 class圆形 Shape publicoverridedoubleGetArea area R2 class三角形 Shape publicoverridedoubleGetArea area 底 高 2 abstractclassShape publicabstractdoubleGetArea 没有方法体 抽象方法和抽象类4 3 3 解决办法 定义为abstract 让各个子类自己去实现吧 练习 参见教材P115页4 3 4课堂练习 10分钟 使用多态性4 3 4 面向对象编程优点4 1 1 简易性对象反映了现实世界的元素 使程序更容易设计封装性隐藏了重要的数据和实现细节 易于代码维护 更安全继承性实现了

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论