C# NEW 和Overrdie

 

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());  }
 }
}

輸出結果:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章