【发布时间】:2015-04-21 14:48:55
【问题描述】:
我们有一些文档类型:
class Document
{
public void virtual Print()
}
class PDF : Document
{
public void override Print()
{
Console.WriteLine("PDF Printed");
}
}
class Excel : Document
{
public void override Print()
{
Console.WriteLine("Excel Printed");
}
}
假设我们有一个文档列表(文档对象),我们在所有文档上调用虚函数 Print()。
foreach(Document doc in DocumentsList)
{
doc.Print();
}
我知道多态是一种非常复杂的实现方式,但是我们真的可以使用 switch 语句来做同样的事情吗?我和一个人争论了很久,他说这是可能的。是吗?
【问题讨论】:
-
为什么不可能?只会更烦人。
-
没有多态一切皆有可能。但它会看起来很尴尬。
-
看起来这篇文章可能有你要找的东西:stackoverflow.com/questions/298976/… 但我同意其他人的观点,多态性几乎肯定是首选的方法。
-
对于图灵完备语言,“可能”的通常答案是“是”。
-
如果有人能正确阅读这个问题,我已经提到多态性是一种复杂的方式。我觉得这个问题被否决,而答案是肯定或否定的却被投赞成票,这很荒谬
标签: c# inheritance switch-statement polymorphism