using System;
namespace TestNewAndOverrideMethod
{
abstract class BaseClass
{
public virtual string Test()
{
return "In BaseClass";
}
}
class InheritClass1:BaseClass
{
public override string Test()
{
return "In InheritClass1, Test Method is override.";
}
}
class InheritClass2:BaseClass
{
public new string Test()
{
return "In InheritClass2, Defined a new Test Method.";
}
}
/// <summary>
/// 测试新方法与虚方法
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//Test1
Console.WriteLine("Test1");
BaseClass test1 = new InheritClass1();
Console.WriteLine("test1.Test(): " + test1.Test());
Console.WriteLine("((InheritClass1) test1).Test(): " + ((InheritClass1) test1).Test());
test1 = new InheritClass2();
Console.WriteLine("test1.Test() " + test1.Test());
Console.WriteLine("(InheritClass2) test1).Test(): " + ((InheritClass2) test1).Test());
//Test2
Console.WriteLine("/nTest2");
InheritClass1 test2 =new InheritClass1();
Console.WriteLine("test2.Test(): " + test2.Test());
Console.WriteLine("((BaseClass) test1).Test(): " + ((BaseClass) test1).Test());
//Test3
Console.WriteLine("/nTest3");
InheritClass2 test3 =new InheritClass2();
Console.WriteLine("test3.Test(): " + test3.Test());
Console.WriteLine("((BaseClass) test3).Test(): " + ((BaseClass) test3).Test()); }
}
}