using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { #region//重寫父類同名方法 class MyClass { public void ShowMessage() { Console.WriteLine("我是父類"); } } class MyClass1 : MyClass { new public void ShowMessage() // 這里就發生了重寫,也可以說是隱藏了父類的方法. 這樣做了之后就不能再使用父類的同名方法了. { Console.WriteLine("我是子類"); } } #endregion #region 覆蓋父類的同名方法. class My { public virtual void SHowMessage() //使用virtual關鍵字表示這個方法會被覆蓋. { Console.WriteLine("我是父類,我將要被覆蓋."); } } class My1 : My { public override void SHowMessage() // 使用override 關鍵字來表示覆蓋父類的同名方法. 覆蓋和重寫不同的是覆蓋可以再調用父類的同名方法, 加一個base關鍵字就可以了. { Console.WriteLine("我是子類,我覆蓋了父類的同名方法"); base.SHowMessage(); // 這里就調用了父類的SHowMessage方法. } } #endregion class Program { static void Main(string[] args) { MyClass1 My = new MyClass1(); My1 my = new My1(); My.ShowMessage(); // 輸出我是子類 my.SHowMessage(); // 輸出我是子類,我覆蓋了父類的同名方法 and 我是父類,我將要被覆蓋 } } }