您的位置:首页 > 编程语言 > C#

c#中new、Override到底是什么区别

2012-03-08 11:07 393 查看
昨天面试问到了new的几种用法以及与Override的区别,有点模糊

回来google下,new的用法有以下3中

1、运算符:初始化对象和调用构造函数

2、修饰符:隐藏基类方法

3、于在泛型声明中约束可能用作类型参数的参数的类型

至于作为修饰符和override的区别,看了下文章不太明白,写了个例子,运行结果,发现了差异,下面分享下代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
abstract public  class Test
{
public  virtual void Prinf()
{
Console.WriteLine("Abstract Printf...");
}

}
public class Class1 : Test
{
public override void Prinf()
{

Console.WriteLine("Class One Override Printf...");
}
}
public class Class2 : Test
{
public new void Prinf()
{

Console.WriteLine("Class Two New Printf...");
}
}

static void Main(string[] args)
{
Class1 cls1 = new Class1();
Class2 cls2 = new Class2();
cls1.Prinf();
cls2.Prinf();
((Test)cls1).Prinf();
((Test)cls2).Prinf();
Console.ReadLine();
}
}
}


运行结果如下:



相信大家也看明白了,原来是这样

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

而override则完全将基类的方法进行了重写,即使将子类型转换为基类型,调用的仍然是重写后的方法。。。

所以new 是隐藏基类方法,而Override是重写基类方法咯

-_-!多少年前的东西了。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: