对接口的形象解释
接口
简单接口就是一个契或者.比如遥控器,国家出台了一个国家遥控器,明文要求所有的遥控器厂家都要遵循,如果不遵循范就不3C认证标,就不允上市出..范呢?大家在实践生活中会常碰到,甲厂的遥控器不能遥控乙厂的电视,电视遥控器不能遥控其它器如空,冰箱.!原因是什?是各个遥控器都没有遵循一个,波有有短,电压有高有低,致各自,45 !  
    
可以想像出国家遥控器准只是定遥控器的一些重要技,比如要射波应该,电压应该多高,...,但它绝对不会范出遥控器的材,形状,重量和,也是说规范把所有同遥控无西都抛弃了!个遥控器厂家只要遵循了,么对遥控器可以有任意的诠释.比如A厂可以用,牢固无比,B厂可以用,可以任意折叠,anyway,不管用什,做出什么样,只要遵循范的遥控器就可以遥控所有的(当然器厂家也要遵循一定的),甚至可以遥控×××发!利害吧,就是接口的威力
.  
    
详细,接口就是一个,他和具体的实现!接口是(虚的),他只是一张纸,一张契约书。实际的使用中接口只有依托一个实现了它的,才会有意,如上面的各个厂家做的遥控器.实现接口的(厂家)必需实现接口中所有的功能.  一旦一个类实现了一个接口,就可一个和接口捆(个很重要,目的候会用到
)
    
来个例子

    interface  
遥控器    //国家定的遥控器  ,个遥控器厂家必需实现(诠释)
    {
          int  
();
          int  
电压
();
    }
    class    
甲厂遥控器  :  遥控器    //甲厂的遥控器实现(诠释),它和遥控器范捆!,它可以在市上出售了

    {
          public  int  
();                        //范上定的指   
          public  int  
电压();                        //范上定的指
  
          public  int  
形状()  {  正方形};          //甲厂自己对该产品的诠释
    
          public  int  
()  (    };                  //甲厂自己对该产品的诠释

    }
    class  
乙厂遥控器  :  遥控器    ////甲厂的遥控器实现(诠释),它和遥控器范捆!,它可以在市上出售了
    {
          public  int  
();                      ////范上的指   
          public  int  
电压();                    //范上定的指
        
          public  int  
形状()(  );          //甲厂自己对该产品的诠释,

          public  int  
()(  );              //甲厂自己对该产品的诠释,,好酷 !      
    }
    class  

    {procedure  
接收遥控(遥控器  )    //器上,接收遥控指令
        {.....
              
接收(遥控器. )  ;              
              
接收(遥控器.电压
);
              .....
}     
  }    
    static  main()
    {
        
甲厂遥控器    ControlA    ;    //申明控制器

        
乙厂遥控器     ControlB    ;
        ControlA    =  new  
甲厂遥控器();  //例化控制器,候系在托管堆中为该对象分配了空

        ControlB    =  new  
乙厂遥控器 ()  ;
        
遥控器    ControlInterfaceA  =  (遥控器)遥控器1  ;    //转换成一个,?"我家的".只能识别遥控器,识别不到具体的遥控器

        
遥控器    ControlInterfaceB  =  (遥控器)遥控器2;    //同上
        
    我家的  =  new   ();
        
我家的.接收遥控(ControlInterfaceA)    //我用甲厂遥控器遥控我家的.  注意:  里的ControlInterfaceA是不能独存在的,它必要依赖实现"遥控器""ControlA".道理很简单,接口是一个指,不会被分配空,你就无法使用,只有和一个具体系了,才有了可以活
.
        
我家的.接收遥控(ControlInterfaceB)    //我用乙厂遥控器遥控我家的

        
        ...
        //
下面是我的的想像,我可以用遥控器来控制×××发 !
        
我的×××.接收遥控
(ControlInterfaceA);
        
我的×××.接收遥控
(ControlInterfaceB);        
        ...
    }
--------------------------------------------------------------------
接口的

好了,有了接口的概念,再来c#程序在运行中是如何使用接口的,如何访问接口函数.具体流程如下
    a.
用一个接口的函数,会去检查这个接口对应实例是什 ?
    b.
找到例后,再去找对应是什(,参看读书
)
    c.
根据检查该实是否和接口生了捆(看是否实现接口,冒号后面就是
)
    d.
!如果类实现接口(生了捆)  ,它就在中找函数的定.然后函数.
.
    e.
如果没找到,他就继续往父,直到找到第一个和接口捆的父类为

    f.
找到后,它再检查该函数是否是虚函数 ,
    g.
如果不是,上就行它
  .
    h  
如果是,,又要从,检查该实的函数是否重函数,...具体(c#读书
2).
    
例子
:
    
        Interface  I
        {
            void  Func()    ;
        }
        
        Class  A  :  I  
        {
            public  virtual  void  Func()  {  Console.WriteLine("FuncA")};
        }
        
        class  B  :  A  ,  I    //
注意里的意思
?
        {
            public  void  Func()  {  Console.WriteLine("FuncB")};
        }        
        
        class  C  :    A  
        {
            public  override  void  Func()  {  Console.WriteLine("FuncC")};
}    
static  main()  
        {    I  a  =  new  A()  ;    //
申明了接口a,上和一个系了

              I  b  =  new  B()  ;    //
申明了接口b,上和一个系了
              I  c  =  new  C()  ;    //
申明了接口c,上和一个系了
              a.Func()  ;              //
检查aA,  发现A和接口I,所以A的函数Func  , :  FuncA
              b.Func()  ;              //
检查bB,  发现B和接口I,所以B的函数Func  ,
:  FuncB
              c.Func()  ;              //
家常cC,发现其没有和接口I,统继续找它的父.  发现AI,他就去找函数A,发现A是虚函数,又从来找C,发现C(override)Func,好了,函数.  果是
FuncC;
      }