接口

对接口的形象解释
接口
简单 接口就是一个契 或者 . 比如遥控器 , 国家出台了一个国家遥控器 , 明文要求所有的遥控器厂家都要遵循 , 如果不遵循 范就不 3C 认证标 , 就不允 上市出 .. 范呢 ? 大家在 实践 生活中会 常碰到 , 甲厂的遥控器不能遥控乙厂的 电视 , 电视 遥控器不能遥控其它 器如空 , 冰箱 .! 原因是什 ? 是各个遥控器都没有遵循一个 , 波有 有短 , 电压 有高有低 , 致各自 ,4 5 !  
    
可以想像出国家遥控器 准只是 定遥控器的一些重要技 , 比如要 射波 应该 , 电压应该 多高 ,..., 但它 绝对 不会 范出遥控器的材 , 形状 , 重量和 , 也是 说规 范把所有同遥控无 西都抛弃了 ! 个遥控器厂家只要遵循了 , 么对 遥控器可以有任意的 诠释 . 比如 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()  ;              //
检查 a A,   发现 A 和接口 I , 所以 A 的函数 Func  , :  FuncA
              b.Func()  ;              //
检查 b B,   发现 B 和接口 I , 所以 B 的函数 Func  , :  FuncB
              c.Func()  ;              //
家常 c C, 发现 其没有和接口 I , 统继续 找它的父 .   发现 A I , 他就去找函数 A, 发现 A 是虚 函数 , 又从 来找 C, 发现 C (override) Func, 好了 , 函数 .   果是 FuncC;
      }  

你可能感兴趣的:(接口,职场,C#,休闲)