zoukankan      html  css  js  c++  java
  • C#接口的三种实现方式

    转自原文C#接口的三种实现方式

        public interface MyInterface  
        {  
            /// 下面三个方法的签名都是  
            /// .method public hidebysig newslot abstract virtual   
            /// public+virutal+abstract  
            void Method1();  
            void Method2();  
            void Method3();  
        }  
      
      
        class MyClass : MyInterface  
        {  
            /// Method1是Non-overridable的实现,是sealed。签名如下  
            /// .method public final hidebysig newslot virtual   
            /// 注意:public+final+virtual  
            public void Method1() { }  
      
      
      
      
            /// Method2是Overridable的实现。签名如下  
            /// .method public hidebysig newslot virtual   
            /// 注意:public+virtual  
            public virtual void Method2() { }  
      
      
      
      
            /// Method3是Explicit的实现,是sealed。签名如下  
            /// .method private final hidebysig newslot virtual   
            /// 注意:private+final+virual  
            void MyInterface.Method3() { }  
        }  
      
      
      
      
        class MyDerived : MyClass  
        {  
            /// .method public hidebysig   
            /// Hidden了MyClass的Method1,所以要加new,否则warning  
            public new void Method1() { }  
      
      
      
      
            /// .method public hidebysig virtual  
            public override void Method2() { }  
      
      
            /// .method private hidebysig   
            void Method3() { }       
        }  
    

    总结:

    Method2的实现是最常见的。

    Method1的实现变成了sealed,用在不想被override的地方。

    Method3的实现比较少见,一种情况是类实例不想对外暴露(private),但是在使用接口的地方又可以访问;另一种是在继承多个接口时,多个接口中相同的函数签名。

        MyInterface myclass = new MyClass();  
        myclass.Method3();  // OK  
  • 相关阅读:
    前端经典书籍
    D3基本概念
    Array.map和parseInt的用法
    首屏和白屏时间计算
    css换肤总结
    文件上传总结
    js的uuid
    html5 drag事件用法
    shell脚本中的逻辑判断 文件目录属性判断 if特殊用法 case判断
    Mac vim“装逼”配置
  • 原文地址:https://www.cnblogs.com/arxive/p/7116431.html
Copyright © 2011-2022 走看看