面向對象編程的三大特性是繼承,封裝和多態。當我們從父類中繼承了一種方法,但是我們事實上需要的是另外一種方法,這時候我們就可以通過重寫方法,實現一個方法名對應多種方法。
舉例來說,我們有一個類名叫Animal,其中有一個方法名為Move
class Animal { public virtual void Move() { Console.WriteLine("Move!"); } }
有一個繼承於該類的子類Bird,其也有一個Move方法,而Bird里面的Move方法和父類中的不一致,我們需要重寫。重寫方法需要使用關鍵詞override
class bird : Animal { public override void Move() { Console.WriteLine("Fly!"); } }
我們在主函數中分別調用這兩個方法
static void Main(string[] args) { Animal myAnimal = new Animal(); myAnimal.Move(); bird myBird = new bird(); myBird.Move(); Console.ReadKey(); }
效果
全部代碼:
program.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Try { class Program { static void Main(string[] args) { Animal myAnimal = new Animal(); myAnimal.Move(); bird myBird = new bird(); myBird.Move(); Console.ReadKey(); } } }
Animal.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Try { class Animal { public virtual void Move() { Console.WriteLine("Move!"); } } class bird : Animal { public override void Move() { Console.WriteLine("Fly!"); } } }