类的多态性资料.ppt

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

面向对象程序设计 (Visual C# .NET) 无锡工艺职业技术学院 王健光 7.1 基本概念 所谓多态,就是把派生类对象当成基类对象来使用。换句话说,就是认为派生类对象是(is a)一种基类对象。 把派生类对象当成基类对象来使用,就是“多态”技术的核心。 多态性引用只能引用基类的成员。 多态的实现方式有以下几种: 虚方法 抽象方法 接口 7.2 虚方法 如果希望基类中的某个方法能够在派生类中进一步得到改进,那么可以把这个方法定义为虚方法。 虚方法就是能在派生类中能够对其实现进一步改进的方法。 在基类的定义中,通过virtual关键字来说明该方法为虚方法。 在派生类的定义中,如果要重载基类的虚方法,使用override关键字。 多态性测试 7.3 抽象方法 基类中定义的虚方法,派生类可以重新以新的方式实现(使用override关键字),也可以不提供实现,这时,调用的是基类的实现方法。 有时,在基类定义中,基类不提供实现方法,而要求派生类必须实现该方法。这时,可以使用抽象方法。 在定义基类方法时,使用abstract关键字,可以定义抽象方法。 抽象方法是一个没有被实现的空方法。 含有抽象方法的类是抽象类,只能由派生类来继承,而不能用来实例化对象。相当于定义了一个模板。 并不要求抽象类必须包含抽象成员。含有抽象成员的类一定是抽象类。抽象类可以包含非抽象成员。 7.2 抽象方法 多态性 面向对象的多态性是指同一操作收到不同的消息(信息)或作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。 多态性分为两种,一种是编译时多态性,一种是运行时多态性。 虚方法 派生类很少一成不变地去继承基类中的所有成员。一种情况是:派生类中的方法成员可以隐藏基类中同名的方法成员,这时通过关键字new对成员加以修饰;另一种更为普遍和灵活的情况是:将基类的方法成员定义为虚拟方法,而在派生类中对虚拟方法进行重载。后者的优势在于它可以实现运行时的多态性,即程序可以在运行过程中确定应该调用哪一个方法成员。 基类的虚拟方法通过关键字virtual进行定义。 抽象类和抽象方法 //抽象方法 public abstract void show(); 包含抽象方法的类必须是抽象类,它也需要使用关键字abstract加以定义,如: public abstract class person { //类的成员定义... } 学习任务 学习任务4.4教师职称类设计 小结 类与对象 作业 1、完成学习任务一和学习任务二 2、完成第4章后面的实训 7.4 上机 完成实验报告7。 给Point-Circle-Cylinder应用程序添加一个圆锥体类(Cone),该类继承自Circle类,并具有Height属性,并重载基类的Area和Volume方法。测试类的多态性。 请大家上机时,将上课所讲的示例调试成功,着重理解类的继承性和类的多态性。 2.5.2 多态性 多态性是指不同的对象收到相同的消息时,会产生不同动作。从而实现“一个接口,多个方法”。它允许以相似的方式来对待所有的派生类,尽管这些派生类是各不相同的。 C#支持两种类型的多态性: (1)编译时的多态性是通过重载类实现的,系统在编译时,根据传递的参数个数、类型信息决定实现何种操作。 (2)运行时的多态性是指在运行时,根据实际情况决定实现何种操作。C#中运行时的多态性通过虚函成员实现。 如果希望基类中某个方法能够在派生类中进一步得到改进,那么可以把这个方法在基类中定义为虚方法。类中的方法前加上了virtual修饰符成为虚方法,反之为非虚方法。使用了virtual修饰符后不允许再有static,abstract或override修饰符。 普通方法重载要求方法名称相同,参数类型和参数个数不同,而虚方法重载要求方法名称、返回值类型、参数表中的参数个数、类型顺序都必须与基类中的虚函数完全一致。在派生类中声明对虚方法的重载要求在声明中加上override关键字,而不能有new、static或virtual修饰符。 2.5.3 protected访问修饰符 前面提到的protected访问修饰符可以将类成员的作用域限制在本类和由它所派生出的类中。例如在下面的代码中,将Weight成员变量声明为受保护后,就只有Animal和由它所派生的类可以访问该成员变量了。 【案例2-9】动物类。 本案例用语演示保护成员的使用。 2.5.4 密封类 C#提供一种不能被继承的类,称为密封类。密封类的声明方法是在类名前加上sealed修饰符。修饰符abstract和sealed不能同时使用。 2.6 抽象类与接口 2.6.1 抽象类 当创建一个类时,有时需要让该类包含一些特殊的方法,该类对这些方

文档评论(0)

风凰传奇 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档