北京理工大学金旭亮老师C#(74—Zoo)

    xiaoxiao2022-07-07  190

    为了更好地理解多态,下面我们来看一个接近真实的示例......

    假设某动物园管理员每天需要给他所负责饲养的狮子、猴子和鸽子喂食。我们用一个程序来模拟他喂食的过程。

    面向对象建模中的“名词法”

    名词法:用人类的自然语言描述出软件要干的事,挑出其中的名词,它们就是“候选”的“类”。

    动物园管理员每天需要给他所负责饲养的狮子、猴子和鸽子喂食。抽取名词:动物园、管理员、狮子、鸽子、猴子三种动物对应三个类,每个类定义一个eat()方法,表示吃饲养员给它们的食物。再设计一个Feeder类代表饲养员,其name字段保存饲养员名字,三个方法分别代表喂养三种不同的动物,其参数分别引用三种动物对象。 class Program { abstract class Animal { public abstract void eat(); } class Feeder { public String name; public void Feed(Animal an) { an.eat(); } } class Monkey:Animal { public override void eat() { Console.WriteLine("吃香蕉"); } } class Pigeon:Animal { public override void eat() { Console.WriteLine("吃大米"); } } class Lion : Animal { public override void eat() { Console.WriteLine("吃肉"); } } static void Main(string[] args) { Animal m = new Monkey(); Animal l = new Lion(); Animal p = new Pigeon(); Feeder f = new Feeder{ name = "xiaoming" }; f.Feed(m); f.Feed(l); f.Feed(p); Console.ReadKey(); } }

    “多态”的好处

    使代码具有更强的适用性。当需求变化时,多态特性可以帮助我们将需要改动的地方减少到最小限度。

    实现方式:

    继承多态

    接口多态

    最新回复(0)