[小学教育]6类的继承性.ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[小学教育]6类的继承性

C# .NET程序设计 范丰龙 fflong@126.com 2009年2月 6. 类的继承性 面向对象编程(OOP)的三大特性: 封装性 继承性 多态性 本章主要介绍: 理解继承和软件继承性 理解基类和派生类的概念 理解成员修饰符protected和internal 使用base引用访问基类成员 如何在基类和派生类中使用构造和析构函数 通过一个案例,演示继承机制 6.1 继承概述 继承是软件复用的一种形式。采用这种形式,可吸收现有类的数据和行为,为其赋予新功能,从而创建出新类。软件复用节省了程序开发时间。它还鼓励人们重用经过实践检验和调试的高质量软件,使系统能高效地实现。 6.2 基类和派生类 日常生活中,一个类的对象也是另一个类的对象。 如,一个Rectangle(矩形)类“属于”四边形(正方形、平行四边形和梯形同样是四边形)。也可以说,Rectangle(矩形类)是从Quadrilateral(四边形)类继承而来的。 Quadrilateral类是基类, Rectangle类是派生类。 再如,教师类和学生类可以由大学成员类派生,讲师、教授又可以由教师类派生,毕业生和在校生又可以由学生类派生。 6.3 保护成员和内部成员 前面介绍了成员访问修饰符:public和private public成员,可以从程序的任何位置,通过该类(基类或派生类)的对象引用,来访问它。 private成员,只能在基类的主体中访问它 再介绍另外两个成员访问修饰符: protected(保护的)成员,只能在基类和它的派生类中访问。 internal(内部的)成员,可以从同一个程序集(Assembly)中,通过类的对象引用,来访问它。 6.4 基类和派生类的关系 示例:Point类(1/3) 示例:Point类(2/3) 示例:Point类(3/3) Point类演示 Circle类 Circle类:没有使用继承(1/4) Circle类:没有使用继承(2/4) Circle类:没有使用继承(3/4) Circle类:没有使用继承(4/4) Circle类演示 使用类继承 以上两个类(Point类和Circle类)中的大部分代码非常类似。程序员最怕的是“重复”劳动,难道需要使用这种“复制”和“粘贴”的方法吗?这将会造成程序员最害怕的“代码维护噩梦”。 我们要用一种更优雅的类构造方法,该方法突出了继承的优势。下面的例子说明了这一点。 我们将创建和测试一个Circle2类,该类从Point类那里继承了变量x和y,及属性X和Y。 注意C#语法中是如何实现类继承的。 Circle2类:使用继承 Circle2类:编译出错? 为什么编译会出错?如何改正? Point2类 Circle2类:从Point2类继承 Circle2类演示 使用protected成员带来的相关问题 如同以前使用public一样,在基类中使用protected成员,会破坏基类的封装性。因为派生类在使用基类的成员,不知道存在哪些约束,可能会在派生类中给这些基类成员赋予了无效的值。 另外一个问题是,派生类的实现可能会依赖于基类。如果基类的成员发生了变化,可能会导致它所有的派生类都会发生改变。 将基类字段声明为private而非protected,能使程序员在更改基类实现时,不必更改派生类的实现。 如有可能,要避免在基类中包括受保护数据,相反,应使用非私有属性和访问私有数据的方法,确保对象维持一致性的状态。 Circle3类:直接继承自Point类 在派生类中,如何访问基类的私有成员呢? 通过基类中对外公开的属性或方法。 使用base引用进行访问 通过下页的示例代码和演示大家可以看到这一点。 Circle3类:直接继承自Point类 Circle3类演示 案例演示:三级继承层次结构 让我们来看一个更现实的继承示例,它牵涉到一个三级的Point-Circle-Cylinder层次结构 Cylinder类:继承自Circle3类(1/4) Cylinder类:继承自Circle3类(2/3) Cylinder类:继承自Circle3类(3/3) Cylinder类演示 类的多态性演示 回顾 类的封装:类的字段一般定义为私有或保护的,通过属性或方法对外公开。 类的继承:提高软件复用的一种形式。 注意类继承的语法 C#语言只能实现单继承。若要实现类似C++的多继承,可以通过接口来实现。 private, protected, public访问修饰符的使用。 base引用。 初步熟悉类的多态性。 Cylinder cylinder = new Cylinder(12, 23, 2.5, 3.7); string output =圆柱体的X坐标是 + cylinder.X + \n + Y坐标

您可能关注的文档

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档