【发布时间】:2014-02-20 08:55:11
【问题描述】:
我经常看到人们像这样使用这个代码
interface IAnimal
{
void die();
}
class Cat : IAnimal
{
void die() { ... }
void meow() { ... }
}
IAnimal anAnimal = new Cat();
Cat aCat= new Cat();
C# 肯定知道 anAnimal.die() 有效,因为 die() 是在 IAnimal 中定义的。但它不会让你做 anAnimal.meow() 即使它是一只猫,而 aCat 可以调用这两种方法。
那么请告诉我为什么以及何时我们应该编写这种代码
IAnimal anAnimal = new Cat();
有什么优势??
谢谢
【问题讨论】:
-
这个问题似乎是题外话,因为它是关于广泛的、一般的编程概念。这个问题属于programmers.stackexchange.com
-
有点解释here
-
投反对票,因为这个问题只是被复制了,并且与这里的答案略有不同stackoverflow.com/a/7211580/2655508
-
@Heslacher,是的,问题中应该有对它的引用。由于没有参考,它看起来更像是在尝试提出 popular 问题。他的最后一个question 也遵循相同的模式。
-
顺便说一下,据我所知,.NET 类不是变量。