我经常看到人们使用这样的代码
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(),即使它是一个 Cat,而 aCat 可以调用这两种方法。
所以告诉我为什么以及什么时候我们应该写这种代码
IAnimal anAnimal = new Cat();
优势是什么??
谢谢
- 如果
anAnimal
也可以分配一个不同的IAnimal
实现,这是必要的。 - 如果使用
anAnimal
的代码不是特定于Cat
的,那么这可能是使代码更通用和可重用的好主意。