C#中new和override的区别
using System; //C#中new和override的区别 namespace Text {//在C#中,override和new都会覆盖父类中的方法。那它们两者之前有什么区别呢?//override是指“覆盖”,是指子类覆盖了父类的方法。子类的对象无法再访问父类中的该方法。 //new是指“隐藏”,是指子类隐藏了父类的方法,当然,通过一定的转换,可以在子类的对象中访问父类的方法。class Base{public virtual void F1(){Console.WriteLine("Base's virtual function F1");}public virtual void F2(){Console.WriteLine("Base's virtual fucntion F2");}}class Derived : Base{public override void F1(){Console.WriteLine("Derived's override function F1");}public new void F2(){Console.WriteLine("Derived's new function F2");}}class EXE1{public static void Fun(){Base b1 = new Derived();//由于子类覆盖了父类的方法,因此这里调用的是子类的F1方法。也是OO中多态的体现 b1.F1();//由于在子类中用new隐藏了父类的方法,因此这里是调用了隐藏的父类方法 b1.F2();}}//或者我们用以下的代码更加容易明白: class EXE2{public static void Fun(){Derived b1 = new Derived();//由于子类覆盖了父类的方法,因此这里调用的是子类的F1方法。也是OO中多态的体现 ((Base)b1).F1();//由于在子类中用new隐藏了父类的方法,因此这里是调用了隐藏的父类方法 ((Base)b1).F2();}}//以上两个的输出都为: //Derived's override function F1 //Base's virtual fucntion F2 //在上面的例子中,由于F1覆盖(override)了原先的方法,//因此即使转成父类的对象,仍旧调用了子类的F1方法。//而由于子类的F2方法只是“隐藏”了父类的F2方法,//因此当强制转换成父类(Base)的对象去调用F2方法时,//调用了原先隐藏的父类的F2方法。 }
转载于:https://www.cnblogs.com/Sky-cloudless/archive/2012/07/05/2577472.html
C#中new和override的区别相关推荐
- java中overload与override的区别
1.综述 重写(Override)也称覆盖,它是父类与子类之间多态性的一种表现,而重载(Overload)是一个类中多态性的一种表现. override从字面就可以知道,它是覆盖了一个方法并且对其重 ...
- fileoutputstream路径 android,Android编程中FileOutputStream与openFileOutput()的区别分析
本文实例分析了Android编程中FileOutputStream与openFileOutput()的区别.分享给大家供大家参考,具体如下: openFileOutput() 首先给大家介绍使用文件如 ...
- android MotionEvent中getX()和getRawX()的区别
今天,讲讲触摸时间里 getX()和getRawX()的区别. 如上图所示: getRowX:触摸点相对于屏幕的坐标 getX: 触摸点相对于按钮的坐标 getTop: 按钮左上角相对于父vie ...
- C++中重载与重写函数区别及虚函数(转载)
C++中重载与重写函数区别及虚函数 C++中的虚函数(virtual function) 1.简介 虚函数是C++中用于实现多态(polymorphism)的机制.核心理念就是通过基类访问派生类定义的 ...
- Java中重载和复写的区别
Java中重载和复写的区别 重载(overload) 复写(override) 区别和联系 重载(overload) 函数重载的最突出的例子就是类的构造函数,用户定义一个对象时可能会提供多种参数组合: ...
- 类的 三大特性 封装,继承,多态 overload与override的区别
OOP三大特性:封装,继承,多态 封装的目的:为了让类更安全 封装的做法: 1.类里面的成员变量做为private 2.使用成员方法来间接访问成员变量 3.在该方法里面加限制条件 php类里面不允许出 ...
- C#中Abstract和Virtual的区别
转自原文 C#中Abstract和Virtual的区别 c# 中 Abstract和Virtual比较容易混淆,都与继承有关,并且涉及override的使用.下面讨论一下二者的区别: 一.Virtua ...
- C#中抽象类和接口的区别与应用场景
一直对这两个基础概念没有很好的认识,在网上发现一个我能够理解的基础概念理解,存一下,反复看. C#中抽象类和接口的区别与应用场景一. 1.抽象类:抽象类是特殊的类,只是不能被实例化;和普通类一样里面什 ...
- Overload和Override的区别说明
下文笔者讲述Overload和Override的区别简介说明,如下所示: Overload:重载Override:覆盖(重写)------------------------------------- ...
最新文章
- Cocoon的sitemap详解
- shell 数组里追加数值_shell编程之数组及变量的多功能用法
- Redis链表结构深入
- python字符串前面加u,r,b的含义
- 计算机科学 —— 时间戳(timestamp)
- 外网不能访问图片的问题
- 莞工计算机学院杀手,莞工oj第40题神奇的fans
- Go语言之高级篇beego框架之模型(Models)
- PHP 大地坐标系转高德经纬度
- Android WebView下载使用教程
- 我身边那些资深程序员,他们是怎么突破年薪百万的?
- Hopping Rabbit---牛客
- Devise邮件模板路径
- Springboot 热部署----热部署插件的使用
- 元数据管理平台技术白皮书
- JavaScript面试题111-120
- sketch如何做设计稿交互_用 Sketch 绘制一份美观的交互稿
- 博物馆场馆智能化展览展示解决方案
- linux 内核修改rss,什么是Linux内存管理中的RSS和VSZ
- WPF 实现柱形统计图
热门文章
- build 之前执行task_Android Gradle新增buildtypes以及编译前执行自定义task
- linux应用系统使用率,Linux性能优化实战:系统CPU使用率高,但为啥找不到高的应用(06)...
- cascader 动态加载 回显_Elementui cascader 级联选择器 动态加载数据,保存后回显的问题...
- python字符串转日期_Python:将字符串时间字典转换为日期时间
- jieba 分词的三种模式
- js时间工具 MyTimeUtil.js
- JDBC连接池JDBCTemplate课堂笔记
- Nginx深入详解之模块化体系结构
- 百度提前批-百度智能小程序(面经详解)
- 协同过滤——基于邻域的算法