- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
C#高级编程
第三章多态
本章目标
理解多态概念(难点)
理解什么是抽象类(难点)
虚方法实现多态(重点)
抽象方法实现多态(重点)
本章任务
通过我们身边的动物来学习:
虚方法的多态实现
抽象方法的多态实现
生活中的多态
Cut….!!!
剪断头发
切开皮肤
停止表演
理发师
外科医生
演员
听到这个声音他们会做什么?
不同对象对于同一个方法(Cut)调用的不同行为。
生活中的多态
如果我们要求3种人——孩子、运动员、音乐演奏者都执行一个动作“play”,会发生什么情况呢?
对于同一个命令,不同的人会有不同的反应,执行不同的动作,这就是生活中的一个多态
孩子会出去玩耍。
运动员进行比赛。
演员开始演奏。
什么是多态
指不同对象收到相同消息时,会产生不同行为
同一个类在不同的场合下表现出不同的行为特征
Person
Person类,在这两种场合的行为不同
Student和Teacher类SayHi()的内容不同
Student
Teacher
理解多态
方法重载,方法名完全相同,但是不同的对象调用时,由于参数不同,执行的结果是不相同的,就是多态的一种表现。
多态是指两个或者多个不同类的对象,调用同一个方法出现不同的结果
实现多态的方法:虚方法和抽象方法
为什么使用虚方法
理解Animal
狗和猫也可以使用通用方式
1、默认Cry能否写在Animal类中?
2、各子类可以重写不同行为Cry。
狗
猫
狗的叫声是汪汪
猫的叫声是喵喵
提供一个通用的方式
现在是动物的叫声
可以使用虚方法实现
什么是虚方法
虚方法:在父类中用virtual关键字声明的方法,在子类中可以重写,也可以不重写的方法
非虚的方法,无论被其所在类的实例调用,还是被这个类的派生类的实例调用,方法的执行方式不变
虚方法执行方式可以被派生类改变,这种改变是通过方法的重载来实现的。
虚方法的语法
访问修饰符virtual返回类型方法名()
{
//访法体
}
访问修饰符override返回类型方法名()
{
//访法体
}
子类重写
父类定义
virtual修饰符后不允许再有static,abstract或override修饰符
虚方法关键字
重写关键字
虚方法使用
publicclassAnimal
{
publicvirtualvoidCry()
{
Console.WriteLine(动物的叫声);
}
}
定义父类Animal
publicclassDog:Animal
{
publicoverridevoidCry()
{
Console.WriteLine(狗的叫声是汪汪);
}
}
子类Dog重写虚方法
staticvoidMain(string[]args)
{
…
Dogmydog=newDog();
mydog.Cry();
Catmycat=newCat();
mycat.Cry();
Console.ReadLine();
}
定义虚方法
重写虚方法
Cat子类中没有重写Cry,调用父类Animal的Cry
Dog子类中重写Cry,使用自己的Cry
控制台调用
什么是抽象类
抽象类:没有包含足够的信息来描绘一个具体的对象的类。
抽象类往往用来表示我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。
如果我们进行一个图形编辑软件的开发,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念。正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的
abstractclassAnimal
{
publicabstractvoidCry();
}
抽象类和抽象方法
抽象类用来列举一个类所需要的行为
抽象类不明确提供具体实现方法
抽象类必须由其子类实现它的抽象方法(除非子类也具有抽象性)
一个没有
实现的方法
有抽象方法的类必然是抽象类
抽象方法
publicoverridevoidSayHi()
{
//…具体实现内容
}
实现抽象方法
使用override实现抽象方法
实现抽象方法
重写
演示示例Animal
抽象类的应用场合
Dog:Animal
Cat:Animal
abstractAnimal
抽象类和抽象方法实现多态性
父类提供一系列规定,
您可能关注的文档
- 2025年上海立达学院高职单招职业适应性测试近5年备考题库及答案解析.docx
- 2025年潍坊环境工程职业学院高职单招职业适应性测试近5年备考题库及答案解析.docx
- 2024-2030全球细条纹胶带行业调研及趋势分析报告.docx
- 2024年全球及中国气动胶筒分配器行业头部企业市场占有率及排名调研报告.docx
- 2024年全球及中国磁芯粉末成型机行业头部企业市场占有率及排名调研报告.docx
- 2025年上海立信会计金融学院高职单招职业适应性测试近5年备考题库及答案解析.docx
- 2025年潍坊理工学院高职单招职业适应性测试近5年备考题库及答案解析.docx
- 2024年全球及中国间隙床身车床行业头部企业市场占有率及排名调研报告.docx
- 2024年全球及中国柜台内扫描仪行业头部企业市场占有率及排名调研报告.docx
- 2024年全球及中国Wi-Fi网状网络系统行业头部企业市场占有率及排名调研报告.docx
- 2025年上海杉达学院高职单招职业适应性测试近5年备考题库及答案解析.docx
- 2024年全球及中国铣削数控系统行业头部企业市场占有率及排名调研报告.docx
- 2024-2030全球游戏策划服务行业调研及趋势分析报告.docx
- 2024年全球及中国车载CT设备行业头部企业市场占有率及排名调研报告.docx
- 2025年温州科技职业学院高职单招职业适应性测试近5年备考题库及答案解析.docx
- 2025年上海商学院高职单招职业适应性测试近5年备考题库及答案解析.docx
- 2024-2030全球废弃食用油行业调研及趋势分析报告.docx
- 2024-2030全球电子墨水薄膜行业调研及趋势分析报告.docx
- 2024-2030全球注射用重组人凝血因子VIII行业调研及趋势分析报告.docx
- 2024年全球及中国含氟聚合物膜过滤器行业头部企业市场占有率及排名调研报告.docx
文档评论(0)