何时使用接口变量 = 新类变量 OOP



我经常看到人们使用这样的代码

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();

优势是什么??

谢谢

  1. 如果anAnimal也可以分配一个不同的IAnimal实现,这是必要的。
  2. 如果使用anAnimal的代码不是特定于Cat的,那么这可能是使代码更通用和可重用的好主意。

最新更新