【问题标题】:When to use Interface variable = new class variable OOP [closed]何时使用接口变量 = 新的类变量 OOP [关闭]
【发布时间】: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 类不是变量。

标签: c# oop


【解决方案1】:
  1. 如果还可以为 anAnimal 分配 IAnimal 的不同实现,则这是必要的。
  2. 如果使用 anAnimal 的代码不是特定于 Cat 的,这可能是使代码更通用和可重用的好主意。

【讨论】:

    猜你喜欢
    • 2012-05-29
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    相关资源
    最近更新 更多