【问题标题】:Understanding interface definition from C# book [closed]从 C# 书中理解接口定义 [关闭]
【发布时间】:2010-11-08 09:13:49
【问题描述】:

我目前正在研究一本 C# 书籍的继承章节。我无法理解以下行。

接口使您能够将对象的定义与其实现分开,以便对象可以在没有风险的情况下发展 在现有应用程序中引入不兼容性。

谁能帮助我理解那行文字的意思?

【问题讨论】:

  • 这个问题可能会帮助你弄清楚一些事情:stackoverflow.com/q/1335586/13198
  • 我还可以知道上面一行中的“对象定义”是什么吗?
  • 感谢大家的时间和帮助。

标签: c# interface


【解决方案1】:
Interfaces enable you to separate the definition of objects from 
their implementation 

在这种情况下,对象的定义是指对象的公开部分。 在下面的示例中,它引用公共属性Name / Age 和公共方法InsertUpdate。 在下面的类中,Person 的定义及其实现(用于实现属性和方法的代码)是相同的,即类 Person。

Class Person 
{
  private string _name; //private fields
  private string _age;  //private fields

  public Name {get {....} set {.....}}  //public properties
  public Age {get {....} set {.....}}  //public properties

  public void Insert() {.......} //public methods
  public void Update() {.......} //public methods
}

注意:“........”表示调用这些属性/方法时将调用的实际代码,即它们的实现。

现在,如果我要为此创建一个名为

的接口
Interface IPerson 
{
  public Name get; set;  //public properties
  public Age get; set;   //public properties
  public void Insert(); //public methods
  public void Update(); //public methods
}

然后做Class Person : IPerson 那么我所做的是我现在将定义(即IPerson)与实现(即Person)分开。

注意:为什么这是有用的已经被 Aamir 和 Gravell 在他们上面的回答中介绍过,所以我不会重复同样的内容

【讨论】:

    【解决方案2】:

    好吧,我不确定我是否完全同意这行 - 毕竟,你可以仍然在实现中添加一个错误 - 但重点是抽象;如果你只知道IAnimal 有一个Speak() 方法,那么你不需要知道DogCat 等;并且您不需要知道何时有人将Dog 替换为DogFacadeLazyLoadedDog 等。只要他们给您的东西是IAnimal,您就会很高兴-并且不需要更改下游代码。

    (如果Dog 类想要公开Bark() 方法,那很好;它可以将Speak 作为IAnimal.Speak显式实现

    【讨论】:

      【解决方案3】:

      这意味着接口允许您定义一组事物的基本功能。他们将如何执行这些功能取决于事物本身。例如,一个人可以走路,但男性、女性、老人、儿童等走路的方式不同,但我们可以说他们都走路。

      因此,接口是一组功能组合在一起,可以由不同的类以不同的方式实现。

      【讨论】:

        猜你喜欢
        • 2012-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-10
        • 2012-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多