重写 override

用关键字 virtual 修饰的方法,叫虚方法
可以在子类中用override 声明同名的方法,这叫“重写”。

相应的,没有用virtual修饰的方法,我们叫它实方法。

重写会改变父类方法的功能。

覆盖 new

在子类中用 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){Dog d = new Dog();  //override 重写 会改变父类的功能Cat c = new Cat();  //new 覆盖 不会改变父类的功能d.Say();//调用override的方法c.Say();//调用new的方法Animal a;a = c;  //a与c指向同一对象,但c是作为Cat类访问,而a是作为Animal类访问c.Say();//此时调用的子类cat中的方法a.Say();//此时调用的是父类animal中的方法a = d;  //a与d都作为Dog类访问d.Say();//此时调用的是override的方法a.Say();//此时调用的是override的方法Animal d1 = new Dog();//当用子类创建父类的时候,override重写会改变父类的功能d1.Say();Animal c1 = new Cat();//当用子类创建父类的时候,new覆盖不会改变父类的功能c1.Say();}}public class Animal{public virtual void Say(){Console.WriteLine("Hello,Animal");}}public class Dog : Animal{public override void Say(){Console.WriteLine("Hello,Dog");}}public class Cat : Animal{public new void Say(){Console.WriteLine("Hello,Cat");}}
}

输出结果:

Hello,Dog
Hello,Cat
Hello,Cat
Hello,Animal
Hello,Dog
Hello,Dog
Hello,Dog
Hello,Animal

C#中重写(override)和覆盖(new)的区别相关推荐

  1. JAVA中重写和实现的区别_Java中重载和重写的区别

    Java中重载和重写的区别 1.1重载是什么 Overloading   方法重载是让类以统一的方式处理不同类型数据的一种手段,多个同名函数同时存在,具有不同的参数个数/类型 1.2为什么用重载 重载 ...

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

    本片文章讲的是多态 子类重写父类函数的方式如下:在父类函数使用virtual,在子类函数中使用override 注意定义变量的时候要使用new来创建,而不要使用类名 变量名的方式,否则在使用时会报错& ...

  3. overwrite java_java中的重写override或overwrite

    java中的重写override或overwrite TestOverWrite.java ? class="java">class Person { private Str ...

  4. C++中的重载、覆盖、隐藏对比

    1.重载.重写(覆盖).隐藏三者概念解释 重载(overload):同一个可访问区域内被声明的几个具有不同参数列(参数的类型.个数.顺序不同)的同名函数.根据参数列表,最终确定调用哪个函数,重载不关心 ...

  5. 谈谈C++继承中的重载,覆盖和隐藏

    写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖(override),隐藏(hide).在早期的C++书籍中,可能 翻译的人不熟悉专业用语(也不能怪他们,他们不是搞计算机编程的 ...

  6. C++中overload,override,overwrite的区别?

    C++中overload,override,overwrite的区别? Overload(重载) Override(覆盖) Overwrite(重写) Overload(重载) 在C++程序中,可以将 ...

  7. 重写(override / overwrite)

    方法的重写(override / overwrite) 1.重写:子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作 2.应用:重写以后,当创建子类对象以后,通过子类对象调用子父类中的同名同 ...

  8. php继承和重载区别,php继承中方法重载(覆盖)的应用场合

    php继承中方法重载(覆盖)的应用场合 发布于 2015-02-23 17:57:23 | 91 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...

  9. 重载Overload 和重写Override区别

    重载Overload 和重写Override区别 一.含义 二.代码 1.重载OverLoad 2.重写Override 一.含义 重载OverLoad:表示同一个类中的可以有多个方法名称相同的方法, ...

最新文章

  1. python字典转dataframe_python DataFrame转dict字典过程详解
  2. php1045无法登录mysql_phpstudy安装完成后打开phpmyadmin提示#1045 无法登录 MySQL 服务器...
  3. 火狐翻译插件_阅读外文必备,浏览器实用的翻译插件推荐
  4. selenium 自动化web测试
  5. C语言项目2:图书管理系统
  6. php读取西门子plc_第三方设备如何读取PLC数据
  7. php ip 转,用php进行ip/子网到IP 地址范围的转换
  8. 输出流缓冲的意义 何时缓冲 Stdout Buffering
  9. linux自动切换网,linux使用shell自动切换网关
  10. SQL技巧——行转列/列转行
  11. Duilib学习笔记(一)—— 环境搭建
  12. 【博弈论】取棋子游戏
  13. video 标签 autoplay 实现自动播放
  14. 计算机科学概论第三版重点,计算机科学概论重点.doc
  15. qrcode 生成二维码不显示图片解决办法
  16. 计算机机型分pc机和什么,三种等分的电脑打印纸一般指什么尺寸
  17. aws api gateway 使用阿里云的域名访问
  18. 当前计算机硬盘容量的计量单位是GB,当前计算机硬盘容量的计量单位是GB,它相当于________字节...
  19. 什么!FPS难道不是越高越好吗?
  20. 安装Windows操作系统纯净版

热门文章

  1. 求实数的绝对值。_例谈六种有关绝对值问题的解题方法
  2. map()和zip()操作
  3. 《openssl编程》之基础知识
  4. VC程序初始化隐藏窗体
  5. strace 哇,好多系统调用
  6. HiKey960 开发板 android 编译
  7. go-zero:微服务框架
  8. Gradle构建中:No cached version available for offline mode解决方案
  9. 直击Kafka的心脏——控制器
  10. 通过QUIC 0-RTT建立更快的连接