网站大量收购独家精品文档,联系QQ:2885784924

c高级编程继承三章多态.pptx

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

抽象类和抽象方法实现多态性

父类提供一系列规定,

您可能关注的文档

文档评论(0)

158****9376 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档