虚方法抽象类多态及接口.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
虚方法抽象类多态及接口

补充 赋值兼容 多态性 示例1 using System; class A { protected int a; public A(int x) { a=x; } public void F() { Console.WriteLine(A.F:“+a); } } class B: A { int b; public B(int x,int y):base(x) { b=y;} new public void F() { Console.WriteLine(“B.F:“+a+”,”+b); } } class Test { static void Main() { A a = new A(1); B b = new B(2,3); a.F(); a=b; //可以将派生类对象的引用赋值给基类变量!反之不行! a.F(); //仍执行基类A的方法! } } 输出结果为: A.F:1 对F方法静态绑定 A.F:2 using System; class A { public virtual void F() { Console.WriteLine(A.F); } } class B: A { public override void F() { Console.WriteLine(“B.F”); } } class Test { static void Main() { A a = new A(); B b = new B(); a.F(); a = b; //或a = new B(); a.F(); }} 【例】 虚方法。 输出结果为: A.F B.F 对F虚方法动态绑定 定义虚方法 重载虚方法 补充: 虚方法及其重载的应用实例 如图所示,父类“运动员”有3个子类,这3个子类都可以继承父类的“训练”这个方法,但是,某些子类的“训练” 可能有不同于父类的内容,此时可以重载父类的训练方法,动态绑定! “跑步!” “游泳!” “传球、射门、跑步!” 用虚方法实现多态的步骤 在基类中某方法可以由子类重新定义实现,则实现步骤如下: 1. 在基类中,可以使用关键字virtual来定义某方法为虚方法(virtual method),virtual关键字放在访问级别修饰符和方法返回数据类型之间,格式如下: public virtual void Train(){ Console.WriteLine(“跑步!”);} 2.子类继承父类之后,可以使用override关键字覆盖父类中的虚方法,并重新给出实现,格式如下: public override void Train() {……} 另外,子类也可以不重载基类的虚方法,直接使用基类的实现。 根据上面给出的语法,定义基类如下: /// summary /// 基类:运动员 /// /summary public class Player { /// summary /// 虚方法:训练 /// /summary public virtual void Train(){ Console.WriteLine(“跑步!”); } } 代码定义了基类Player,它有一个虚方法Train(); 用虚方法实现例题 【虚方法实现例6-1】下面的代码分别实现3个子类运动员。 /// summary /// 足球运动员 /// /summary public class FootballPlayer : Player { public override void Train() { Console.WriteLine(“传球、射门、跑步!); } } ? 用虚方法实现例题 /// summary /// 游泳运动员 /// /summary public class SwimPlayer : Player { public override void Train() { Console.WriteLine(“游泳!); } } 用虚方法实现例题 /// summary /// 短跑运动员 /// /summary public class Sprinters : Player { } 说明:以上的足球运动员类和游泳运动员类继承了运动员类,并重新实现了其父类中的虚方法Train()。而子类短跑运动员类则没有重载该虚方法。 用虚方法实现例题 6.2.1 什么是多态 继续上一节给出的例子,现在假设你是一个运动员总

文档评论(0)

zhuliyan1314 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档