多态和抽象类-上海交通大学继续教育学院.ppt

多态和抽象类-上海交通大学继续教育学院.ppt

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

应用软件开发(C#) 第4章 面向对象编程方法 应用软件开发(C#) 第1章 C#程序设计基础 第4章 面向对象编程方法 王德俊 上海交通大学继续教育学院 第4章 面向对象编程方法 4.1一个简单的程序 4.2 类和对象 4.3 类的继承、重载与多态 4.4 运算符的重载 4.5 接口及其实现 4.6 方法的委托 4.7 常用的几个类 4.8 命名空间 4.3 类的继承、重载与多态 4.3.1 继承 4.3.2 重载 4.3.3 多态 4.3.3 多态 继承的多态性是面向对象编程的显著特点,继承的多态性需要通过虚方法、抽象类和抽象方法等来实现 1 多态性概述 2 虚方法 3 抽象类与抽象方法 1 多态性概述 在类的继承中,派生类可以继承基类的方法成员,也可以声明新的方法成员以实现派生类所具有的特殊功能,从而使基类的功能在派生类中得以扩展 在类的继承中,C#允许在基类与派生类中声明具有同名的方法,而且同名的方法可以有不同的代码,也就是说,在基类与派生类的相同功能中可以有不同的具体实现,从而为解决同一问题提供多种途径 多态性就是指在程序运行时,执行的虽然是一个调用方法的语句,却可以根据派生类对象的类型不同调用同名方法的不同实现 多态性 在基类中定义方法 在派生类中实现它们 调用时根据调用对象的类型决定调用不同的实现 Shape CalculateArea( ) Rectangle CalculateArea( ) Circle CalculateArea( ) 2 虚方法 (1) 声明与基类同名的派生类方法 (2) 声明虚方法 (3) 调用基类方法 (1) 声明与基类同名的派生类方法 在派生类中如果定义和基类同名但参数不同的方法,则形成方法的重载,使用方式类似一个类中的方法的重载; 对于在派生类中声明与基类同名的方法,则用new关键字,格式如下: public new 方法名称(参数列表){ } 使用new关键字声明的派生类方法,主要是为基类与派生类使用同一方法名实现不同的具体功能提供了方便 以例InheritFromStudent3定义的基类与派生类为例,在Student_1中声明一个与基类同名的Show方法,并作如下修改(例InheritFromStudent4 ): public new string Show( ) { string show=学号:+id.ToString() + 姓名:+name+性别:+sex+ 年龄:+age .ToString()+\n+成绩1:+score1. ToString()+ 成绩2:+score2. ToString(); return show; } 修改button1_Click中代码如下: Student s=new Student(2005001,张三,女,21 ); Student_1 subS=new Student_1(2005001,张三,女, 21,91,100); label1.Text =s.Show( ); //调用Student的Show() 修改红色语句为: label1.Text =subS.Show( ); //调用Student_1的Show() 如果试试s=subS; label1.Text =s.Show( );结果会怎样呢? (2) 声明虚方法 要实现继承的多态性,在类定义方面,必须分别用virtual关键字与override关键字在基类与派生类中声明同名的方法 在基类中声明虚方法,格式为: public virtual 方法名称(参数列表){ } 在派生类中对虚方法进行重载,格式为: public override 方法名称(参数列表){ } 其中,基类与派生类中的方法名称与参数列表必须完全一致 与派生类对基类成员的覆盖(new)相比,虚拟+重载的优势在于它能够实现运行时的多态性 声明虚方法 要实现多态性,通常是在基类与派生类定义之外再定义一个含基类对象形参的方法 因为基类对象不仅可以接受本类型的对象实参,也可以接受其派生类类型或派生类的派生类类型的实参,并且可以根据接受的对象类型不同调用相应类定义中的方法,从而实现多态性 修改例InheritFromStudent3中的Student 和Student_1类中的show方法: Student 中的show方法前加virtual; Student_1中的show方法前加override,去掉new; 删去前页的两行红色代码,改为: s=subS; lblInfo.Text =s.Show( ); 或作以下两步修改: 删去前页的两行红色

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档