【发布时间】:2013-09-30 20:00:03
【问题描述】:
假设以下类:
public class Animal
{
}
public class Dog : Animal
{
public void Bark()
{
}
}
public class Cat : Animal
{
public void Meow()
{
}
}
Animal cat = Cat();
Animal dog = Dog();
PatternIamLookingFor.DoSomething(cat); // -> Call Meow
PatternIamLookingFor.DoSomething(dog); // -> Call Bark
这可能吗?不向 Animal 基类添加 MakeNoise() 之类的方法?
在我的应用程序中,我有一个 CatFactory 和一个 DogFactory,它们实现了 AnimalFactory 并返回 Animals。我不能在工厂里叫喵/吠,我拿到动物后也不能叫它。
【问题讨论】:
-
正如@Reed 建议的那样,你不能这样做没有反射。但是,如果您确实反映了,您可以简单地为您的
Bark和Meow方法添加一个属性,可能称为[MakeNoise],这将允许不同的方法名称。
标签: c# inheritance polymorphism