C# 中接口和 class 都可以被继承。
.NET 里面只允许单一继承,这里只一个类只能有一个父类。但是可以实现多个接口,毕竟接口是虚的实现。class 和接口的继承分别用于 is-a 和 has-a 场合。

解决方案 »

  1.   


    我们可以设想一下以下的情况:你无法预知会有什么样的对象要被创建,而且你也很难预知被创建的对象会如何运作,但是你却知道对象会有那些动作,那么你就可以使用接口了。例如你知道你的应用中会有一个对象,会执行一个Operation的动作,那么可以这样做:public interface IFoo{   void Operation();}而后,所有要执行Operation操作的对象都继承IFoo接口。例如有一个对象FooObjApublic class FooObjA:IFoo{   public void Operation()   {       //user code;   }}FooObjA实现了Operation的操作,而不用关心其它。其实这样还是无法了解接口的实际作用,因为这样可以使用Abstract Class来替换接口。那么我们再设想一下,有一个Observer的对象,它负责记录下已有的对象,而不管对象是谁创建,也不管对象做什么用,但是这些对象都是继承IFoo的。而在系统的另一边,有一些对象需要从Observer获取这些对象中符合它们要求的对象,然后执行Operation操作,即:IFoo foo=Observer("some requirement");foo.Operation();这样,调用者从来都不需要知道Observer另一边的情况,只需要知道有符合它们要求的的对象存在,就足够了。而这一点,Abstract Class是无法做到的。 
      

  2.   

    triout(笨牛) 和  wick(坏人) 
    说的不错呵
      

  3.   

    如果你对抽象类比较了解的话,我想通过比较抽象类和接口来了解接口的含义可能会更容易,下面是一篇关于接口和抽象类的区别和使用场合的文章,也许对你会有点帮助:
    http://software.ccidnet.com/pub/disp/Article?articleID=40306&columnID=322
      

  4.   

    http://www.yesky.com/SoftChannel/72348977504190464/20031222/1755623.shtml#http://tech.ccidnet.com/pub/disp/Article?columnID=295&articleID=40173&pageNO=1挺不错的接口介绍
      

  5.   

    http://www.cnblogs.com/hush/archive/2004/04/30/8194.aspx
      

  6.   

    举个例子上帝定义了一个接口,其中只有一个方法:
    bool love(girl);但接下来的事情就需要我们自己去实现了,每个人可能都有不同的实现方法
      

  7.   

    langmafeng(乞力马扎罗)
     弓虽