本片文章讲的是多态

子类重写父类函数的方式如下:在父类函数使用virtual,在子类函数中使用override

注意定义变量的时候要使用new来创建,而不要使用类名 变量名的方式,否则在使用时会报错“使用了未赋值的局部变量”。

代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp1
{class Program{public static void Main(string[] args){Zoo zoo = new Zoo();Dog dog = new Dog();Cat cat = new Cat();Monkey monkey = new Monkey();zoo.show(dog);      //"我是小狗,我喜欢吃肉"zoo.show(cat);      //"我是小狗,我喜欢吃肉"zoo.show(monkey);   //"我是猴子,我喜欢吃桃子"Animal animal = new Animal();animal.likeFood();}}class Animal{public virtual void likeFood(){Console.WriteLine("我是Animal类,我不知道喜欢吃啥");}}class Dog : Animal{public override void likeFood(){Console.WriteLine("我是小狗,我喜欢吃肉");}}class Cat : Animal{public override void likeFood(){Console.WriteLine("我是小猫,我喜欢吃鱼");}}class Monkey : Animal{public override void likeFood(){Console.WriteLine("我是猴子,我喜欢吃桃子");}}class Zoo{public void show(Animal animal){animal.likeFood();}}
}

输出结果

我是小狗,我喜欢吃肉
我是小猫,我喜欢吃鱼
我是猴子,我喜欢吃桃子

C#继承与多态 virtual虚方法的使用 在子类中使用override重写父类函数相关推荐

  1. C#-继承-多态-VIRTUAL虚方法(下)

    面向对象的编程中,有着一个叫做"依赖倒置原则" 程序设计要依赖与抽象类,而不依赖于具体类 比如说抽象类就相当于是父类"宠物" 具体类就是"狗狗&quo ...

  2. 【原创】SystemVerilog中的多态和虚方法

    封装可以隐藏实现细节,使代码模块化,继承可以扩展已经存在的代码模块,目的都是为了代码重用.多态是为了实现接口的重用.在SystemVerilog中,子类和父类之间多个子程序使用同一个名字的现象称为Sy ...

  3. C# 中的多态和虚方法,如何实现多态和使用虚方法?

    在 C# 中,多态(Polymorphism)是面向对象编程的基本特性之一,它允许使用不同的对象和方法来执行同一操作.C# 中实现多态的方式主要是通过虚方法和抽象类. 虚方法是一种允许子类覆盖的方法, ...

  4. java的虚方法_Java多态和虚方法调用

    多态(polymorphism) 多态的概念 ·多态是指一个程序中相同的名字表示不同的含义的情况. ·多态有两种情形: 1.编译时多态: 1.重载(overload)多个同名的不同方法: 2.如:p. ...

  5. python完全支持面向对象编程思想_面向对象的编程思想和Python的继承和多态,特殊方法,引用计数...

    面向对象的编程思想和Python的类,访问和属性,继承 在上一文中我们了解到了,私有的属性的访问方式:实例名._类名__私有属性名. 一.私有的属性如何对外提供公有的取值和赋值方法呢?提供公有的方法作 ...

  6. 虚方法调用在Java虚拟机中的实现方式?

    写在前面 本文隶属于专栏<100个问题搞定Java虚拟机>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和文献引用请见100个问题搞定Java ...

  7. c语言 调用父类方法,关于C++:如何从派生类函数调用父类函数?

    如何调用C++派生类中的父函数?例如,我有一个名为parent的类,还有一个名为child的类,它是从父类派生的.内每个类都有一个print函数.在定义孩子的打印函数时,我想调用家长的打印函数.我该怎 ...

  8. java中random方法取值范围_Java中的Random()函数

    今天在做Java练习的时候注意到了Java里面的一个随机函数--Random,刚开始只是知道这个函数具有随机取值的作用,于是上网搜索了资料一番,做了一下一些关于Random函数的总结: Java中存在 ...

  9. C#多态性的小记,父类,子类,虚方法,接口

    一.父类,子类的继承和虚方法重写 class Program{static void Main(string[] args){Person objperson= new Person ();//实例p ...

最新文章

  1. tf.reduce_sum()函数
  2. 速卖通现在好做吗?深耕产品供应,优化售后发货才能走的更远
  3. 卓京计算机学校,卓京--计算机数据原理课程设计任务书.doc
  4. matplotlib中文乱码问题 解决 有代码例子
  5. 《数学之美》——第三章 个人笔记
  6. 循环类里面的每一个属性
  7. 前端开发注意事项(HTML与CSS进阶)
  8. linux第三方模块参数,nginx 的第三方模块ngx_http_accesskey_module 来实现下载文件的防盗链步骤(linux系统下)...
  9. 在centos中安装samba 服务
  10. Android 学习心得(2)——Android内置数据库SQLite
  11. python函数返回数组_从Cdef函数返回数组
  12. 如何计算信号的信噪比
  13. 资源分享 | 敬伟 PS 教程 ABCD 四套全集
  14. git初次上传代码到远程仓库,输入用户名密码,提示鉴权失败
  15. matlab 复化求积公式,matlab复化Simpson求积公式计算数值积分
  16. 两台计算机如何组成局域网,两台电脑如何建立局域网
  17. ESP-AT 应用: AT+MQTT 对接腾讯 QCloud 云
  18. 前端面试宝典 html css js ajax es6
  19. Lucene入门教程及java实现
  20. 从飞思卡尔到NXP,经久不衰的i.MX系列产品背后的“成功学”

热门文章

  1. java:数字转string 报空指针_《java基础》我踩过三元运算符的坑
  2. tensorflow官方文档_Tensorflow 2.0 Preview 官方文档
  3. python语言的重要性_【一点资讯】这个可能打败Python的编程语言,正在征服科学界 www.yidianzixun.com...
  4. 哦豁?这个程序员…… 有、东西!
  5. 深度阅读之《Mastering Go》
  6. 【线上分享】WebRTC传输与服务质量
  7. 【免费活动】解析腾讯云音视频通信三大核心网络技术实战与创新
  8. 音视频技术开发周刊 | 183
  9. Xilinx FPGA,“加速”视频质量提升
  10. LiveVideoStack线上交流分享 (十七) —— AV1编码器优化与实用落地演进之路