了解C#book中的接口定义

时间:2010-11-08 09:13:50

标签: c# interface

我目前正在研究C#书的继承章节。我无法理解以下内容。

  

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

任何人都可以通过示例帮助我理解这一行文字的含义吗?

3 个答案:

答案 0 :(得分:0)

好吧,我不确定我是否完全同意这条线 - 毕竟,你仍然在实施中添加了一个错误 - 但重点是抽象;如果您只知道IAnimalSpeak()方法,则无需了解DogCat等;并且你不需要知道有人为DogDogFacade等交换LazyLoadedDog。只要他们给你的东西是IAnimal,你就会很高兴 - 并且不需要更改下游代码。

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

答案 1 :(得分:0)

这意味着Interfaces允许您定义一组事物的基本功能。他们如何履行这些职能留给了事物本身。例如,一个人可以走路,但男性,女性,老人,孩子等走路的方式不同,但我们可以说他们都走路了。

因此,接口是一组放在一起的函数,可以由不同的类以不同的方式实现。

答案 2 :(得分:0)

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的上述答案中涵盖了,所以我不会重复相同的