浅谈C# 多态的魅力(虚方法,抽象,接口实现)(转)
我们都知道,喜鹊(Magpie)、老鹰(Eagle)、企鹅(Penguin)都是属于鸟类,我们可以根据这三者的共有特性提取出鸟类(Bird)做为父类,喜鹊喜欢吃虫子,老鹰喜欢吃肉,企鹅喜欢吃鱼。
创建基类Bird如下,添加一个虚方法Eat():
/// <summary> /// 鸟类:父类 /// </summary> public class Bird { /// <summary> /// 吃:虚方法 /// </summary> public virtual void Eat() { Console.WriteLine("我是一只小小鸟,我喜欢吃虫子~"); } }
创建子类Magpie如下,继承父类Bird,重写父类Bird中的虚方法Eat():
/// <summary> /// 喜鹊:子类 /// </summary> public class Magpie:Bird { /// <summary> /// 重写父类中Eat方法 /// </summary> public override void Eat() { Console.WriteLine("我是一只喜鹊,我喜欢吃虫子~"); } }
建一个子类Eagle如下,继承父类Bird,重写父类Bird中的虚方法Eat():
/// <summary> /// 企鹅:子类 /// </summary> public class Penguin:Bird { /// <summary> /// 重写父类中Eat方法 /// </summary> public override void Eat() { Console.WriteLine("我是一只小企鹅,我喜欢吃鱼~"); } }
到此,一个基类,三个子类已经创建完毕,接下来我们在主函数中来看下多态是怎样体现的。
static void Main(string[] args) { //创建一个Bird基类数组,添加基类Bird对象,Magpie对象,Eagle对象,Penguin对象 Bird[] birds = { new Bird(), new Magpie(), new Eagle(), new Penguin() }; //遍历一下birds数组 foreach (Bird bird in birds) { bird.Eat(); } Console.ReadKey(); }
-------此处无银三百两------