面向对象编程的三大特性是继承,封装和多态。当我们从父类中继承了一种方法,但是我们事实上需要的是另外一种方法,这时候我们就可以通过重写方法,实现一个方法名对应多种方法。
举例来说,我们有一个类名叫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!"); } } }