using System;
using System.Collections.Generic;
namespace MyApp
{
class Program
{
static void Main()
{
ObjectContainer objectContainer = new ObjectContainer();
objectContainer.AddAnimals();
objectContainer.GetActions(new StrangerComing());
Console.WriteLine();
objectContainer.GetActions(new HostComing());
Console.ReadKey();
}
}
abstract class Action
{
public abstract void GetCatAction();
public abstract void GetDogAction();
}
class StrangerComing : Action
{
public override void GetCatAction()
{
Console.WriteLine("The cat:run out and disappear soon...");
}
public override void GetDogAction()
{
Console.WriteLine("The dog:Bar, bar...");
}
}
class HostComing : Action
{
public override void GetCatAction()
{
Console.WriteLine("The cat:Miao, miao...");
}
public override void GetDogAction()
{
Console.WriteLine("The dog:Tail whip ...");
}
}
abstract class Animal
{
public abstract void GetAction(Action action);
}
class Cat : Animal
{
public override void GetAction(Action action)
{
action.GetCatAction();
}
}
class Dog : Animal
{
public override void GetAction(Action action)
{
action.GetDogAction();
}
}
class ObjectContainer
{
List<Animal> animals = new List<Animal>();
public void GetActions(Action action)
{
foreach (Animal animal in animals)
{
animal.GetAction(action);
}
}
public void AddAnimals()
{
animals.Add(new Cat());
animals.Add(new Dog());
}
}
}
本文介绍了一个简单的动物反应模拟器程序,该程序通过不同场景(如陌生人来访和主人回家)模拟了猫和狗的不同行为反应。使用C#语言实现,通过抽象类和继承展示了多态性的应用。
1758

被折叠的 条评论
为什么被折叠?



