由于子类继承类父类,那么子类就拥有相同的行为,但子类的行为有时需要相互区别

子类就需要覆写父类的方法来实现子类特有的行为,这样的技术在c#中就叫做多态。

多态就是相同类型的对象调用相同的方法却表现出不同的现象

使用virtual和override关键字实现重写方法

只有基类成员声明为virtual和abstract时才能被派生类重写

而如果子类想改变虚方法的实现行为,则必须使用override关键字

最后执行结果为:

但是这样的代码存在一个问题

就是

Animal animal=new Animal ();

这个样的话毫无意义,因为这里的基类是为子类提供公共成员

那么我们可以将基类创建为抽象类利用abstract关键字就可以防止这种情况发生。

阻止派生类重写虚成员


利用sealed关键字来实现

如果在有个类来继承Horse并试图重写Voice方法就会收到错误信息

使用新成员隐藏基类成员

利用new关键字来实现

转载于:https://www.cnblogs.com/lbonet/p/6874829.html

C# 面向对象之多态相关推荐

  1. 12 Java面向对象之多态

    JavaSE 基础之十二 12 Java面向对象之多态 ① 多态的概念及分类 多态的概念:对象的多种表现形式和能力 多态的分类 1. 静态多态:在编译期间,程序就能决定调用哪个方法.方法的重载就表现出 ...

  2. swift面向对象之多态与继承

    swift面向对象之多态与继承 1.多态 运行时多态 运行时多态的要点 1.要有继承关系的存在 2.子类要重写父类的方法 3.父类类型的引用指向子类实例 2.继承 1.继承的注意 继承可以用于类而不能 ...

  3. Golang笔记-面向对象编程-多态/类型断言

    面向对象编程-多态 基本介绍 变量(实例)具有多种形态.面向对象的第三大特征,在 Go 语言,多态特征是通过接口实现的.可 以按照统一的接口来调用不同的实现.这时接口变量就呈现不同的形态. 快速入门 ...

  4. Java 面向对象:多态的理解

    Java 面向对象:多态的理解 一.多态的定义 一个对象的实际类型是确定的,但可以指向引用对象的类型可以有很多(父类,有关系的类) 操作符的多态 +可以作为算数运算,也可以作为字符串连接 类的多态 父 ...

  5. python面向对象三大特性_Python面向对象之多态原理与用法案例分析

    本文实例讲述了Python面向对象之多态原理与用法.分享给大家供大家参考,具体如下: 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 ...

  6. python中的多态用法_Python面向对象之多态原理与用法案例分析

    本文实例讲述了Python面向对象之多态原理与用法.分享给大家供大家参考,具体如下: 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 ...

  7. Python面向对象编程---多态

    Python面向对象编程-多态 定义: 是一种使用对象的方式,子类重写父类的方法(非必须),调用不同子类对象的相同父类方法,可以产生不同的执行结果,简言之就是:传入不同的对象,产生不同的结果. 好处: ...

  8. Java面向对象之多态(来源于身边的案例)

    2019年1月3日 星期四 Java面向对象之多态(来源于身边的案例) 1. 为什么要用多态? 1.1 多态是面向对象的三大特性之一 1.2 多态是基于接口设计的模型 1.3 多态具有横向扩展特性 1 ...

  9. Java面向对象:多态——基于继承的向上转型、方法重写、动态绑定

    Java面向对象:多态 1.多态的概念 2.向上转型和向下转型 (1)向上转型 (2)向下转型 3.方法重写 4.动态绑定与静态绑定 5.多态的优缺点 ======================== ...

  10. Python学习 - 面向对象之多态

    Python学习 - 语法入门:https://blog.csdn.net/wanzijy/article/details/125287855 Python学习 - 数据类型:https://blog ...

最新文章

  1. 造成机器学习项目失败的7个原因
  2. linux文件系统pdf_一篇文章理解Ext4文件系统的目录
  3. 视图view的生命周期的一点见解
  4. 干货 | Elasticsearch7.X Scripting脚本使用详解
  5. 全国计算机等级考试题库二级C操作题100套(第43套)
  6. c语言 画线函数,c语言绘制函数曲线
  7. 都啥年代了,求你别再说Redis是单线程了!
  8. hdu 1269 tarjan求强连通分量
  9. python tuple
  10. 一个小例子介绍Obj-C的函数命名方式
  11. Java实现SQL格式化
  12. vs code 代码格式化整理
  13. 关于sfc /scannow后主题文件的重置
  14. CSP/CCF计算机职业资格认证题目:[201903-1 小中大]【已解决】
  15. 【行业专题报告】酒类(白酒、啤酒)-专题资料
  16. CutefishOS 0.6 Beta 发布
  17. thinkphp配置mysql集群_ThinkPHP教程_PHP框架之ThinkPHP(五)【连接数据库与主从数据库设置】...
  18. C语言打印平行四边形
  19. 基于AppCan移动云平台搭建“智慧移动门户”
  20. 怕抢不到演唱会门票?AI帮你做攻略!

热门文章

  1. mysql 语句中的national 、 comment
  2. POJ 1154题解,此题不难理解方法就是DFS,属于水题。不过有一些细节要注意。...
  3. Windows下使用VS2008+CUDA3.0开发的详细配置 (Setup CUDA 3.0 on VS2008 in Windows)
  4. 大数据之-Hadoop之HDFS的API操作_机架感知_副本存储的节点的选择---大数据之hadoop工作笔记0068
  5. IOS工作笔记003---windows给VmWare虚拟机OS系统安装xcode
  6. 如何在服务器上使用matlab
  7. 关于图像质量评测的分析
  8. Linux 重启php
  9. php调用shell的方法
  10. linux驱动编写(字符设备编写框架)