给你个例子,看看new和override的区别 using System;public class TestingClass { public static void Main() { MyClass myClass = new MyClass(); myClass.Common(); myClass.Virtual(); myClass.New(); BaseClass baseClass = myClass; baseClass.Common(); baseClass.Virtual(); baseClass.New(); } }public class BaseClass { public void Common() { Console.WriteLine("BaseCommon()"); }
public virtual void Virtual() { Console.WriteLine("BaseVirtual()"); }
public virtual void New() { Console.WriteLine("BaseNew()"); } }public class MyClass : BaseClass { public new void Common() { Console.WriteLine("MyCommon()"); }
public override void Virtual() { Console.WriteLine("MyVirtual()"); }
public new void New() { Console.WriteLine("MyNew()"); } }
using System;public class TestingClass
{
public static void Main()
{
MyClass myClass = new MyClass();
myClass.Common();
myClass.Virtual();
myClass.New();
BaseClass baseClass = myClass;
baseClass.Common();
baseClass.Virtual();
baseClass.New();
}
}public class BaseClass
{
public void Common()
{
Console.WriteLine("BaseCommon()");
}
public virtual void Virtual()
{
Console.WriteLine("BaseVirtual()");
}
public virtual void New()
{
Console.WriteLine("BaseNew()");
}
}public class MyClass : BaseClass
{
public new void Common()
{
Console.WriteLine("MyCommon()");
}
public override void Virtual()
{
Console.WriteLine("MyVirtual()");
}
public new void New()
{
Console.WriteLine("MyNew()");
}
}
New只是在子类中又声明了一个仅仅与基类方法名一致的一个方法而以。
楼上的例子是经典的hello word...执行virtual方法(它又叫虚方法)时,会检查子类中是否重写了该方法,如果重写了就会执行子类中重写的override方法,,,,没重写的话就执行该虚方法
2.New只是在子类中又声明了一个仅仅与基类方法名一致的一个方法而以
其效果就是一是晚绑定,实现多态。
另一个“隐匿”了基类的方法