手机版

C# new和override的区别分析

时间:2021-11-23 来源:互联网 编辑:宝哥软件园 浏览:

昨天采访问了new的几个用法,New和Override的区别,有点模糊。

谷歌,新的用法有以下3个。

1.运算符:初始化对象并调用构造函数。

2.修饰符:隐藏基类方法。

3.约束可在泛型声明中用作类型参数的参数类型。

至于修饰语和override的区别,我看完文章不太懂。我写了一个例子,运行结果后发现了区别。让我们分享下面的代码:

使用系统;使用系统。集合。通用;使用系统。Linq使用系统。文字;命名空间Console application 1 { class Program {抽象公共类Test { public virtual void Prinf(){ Console }。WriteLine('抽象Printf . ');} }公共类class 1 : Test { public override void Prinf(){ Console。写线('一类覆盖打印.');} }公共类class 2 : Test { public new void Prinf(){ Console。WriteLine('二类新打印.');} }静态void Main(字符串[]args){ class 1 cls 1=new class 1();Class2 cls2=新的class 2();cls1。prinf();cls2。prinf();((测试)cls1)。prinf();((测试)cls2)。prinf();控制台。ReadLine();}}}运行结果如下:

我相信每个人都能看到。原来是这样的。

隐藏基类方法后,new仍然可以通过转换为基类型来调用基类的虚拟方法。

重写完全重写基类的方法。即使子类型被转换为基类型,重写的方法仍然被调用。

所以new是一个隐藏的基类方法,override是一个Override基类方法。

Override指的是“覆盖”,这意味着子类覆盖父类。子类的对象不能再在父类中访问这个方法。New指的是“隐藏”,指的是子类隐藏其父类的方法。当然,通过一定的转换,它可以访问子类对象中的父类。因此,C# new和override的区别在于覆盖和隐藏。

以下是代码:

基类{公共虚拟void F1() {Console。WriteLine('Base的虚拟函数F1 ');}公共虚拟空间F2() {Console。写线(“基地的虚拟功能F2”);} } class Derived : base { public override void F1(){ Console。WriteLine('派生类的重写函数F1 ');}public new void F2() {Console。WriteLine('派生类的新函数F2 ');} }类Program { public static void Main(string[]args){ Base B1=new Derived();//因为子类覆盖了父类的方法,所以这里调用子类的F1方法。也是多态在OO b1中的体现。F1();//因为父类的方法在子类中用new隐藏,所以隐藏的父类方法b1。F2()在这里被称为。}}

版权声明:C# new和override的区别分析是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。