• C#接口总结


    浅析C#接口特点及实例应用

          C#接口(interface)的掌握对我们开发有什么作用呢?C#接口的使用能够使我们的程序有什么改进?那么我们首先我们来看看C#接口特点以及具体的实例使用分析:

    • C#接口特点1:都是“虚的”不能被实例化,这也是接口中为什么不能包含字段--成员变量的原因
    • C#接口特点2:正因为接口是虚的,所以接口内的索引,属性,时间等只能有声明,而不能在接口内实现,具体如何实现是派生接口或者派生类的事.
    • C#接口特点3:都具有模板的性质,如果一个接口或者类从某一个接口继承,它将自动具有被集成者的特征(包括索引,属性,函数,实践等).
    • C#接口特点4:接口支持多重继承,而C#中,类之支持单一继承,接口实际表示的是一种承载能力。

    下面是C#接口实例的一个简单定义:

    interface 
    SampInterface1  
    {  
        string   
        this[ int index]  
        {  
            get;  
            set 
        }  
        ;  
        event EventHandler Event;  
        void  Find( int value );  
        //注意此处没有  
        {  
        }  
          
        string Po  
        int 
       {  
            get;  
            set 
        }  
        ;  
    } 

    上面的C#接口实例定义了一个索引 this,一个实践Event,一个方法Find和一个属性Point.

    public interface SampIneterface:SampIneterface1{   
    pravite int a=1;  
    void find (int value)  
    {  
    a+=value;  
    }  
    event EventHandler Event;  
    protected void onEvent()  
    {  
    if(Event=null)  
    {return Event(this.System.EventAgrs.Empty;)}  
    }  
     
    1}

    C#接口的定义详解

          C#接口的定义从技术上讲,接口是一组包含了函数型方法的数据结构。通过这组数据结构,客户代码可以调用组件对象的功能。

     C#接口的定义一般形式为:

    [attributes] [modifiers] interface identifier [:base-list] {interface-body}[;]  

    C#接口的定义说明:

        · attributes(可选):附加的定义性信息。

        · modifiers(可选):允许使用的修饰符有new和四个访问修饰符。分别是:new、public、protected、internal、private。在一个接口定义中同一修饰符不允许出现多次,new修饰符只能出现在嵌套接口中,表示覆盖了继承而来的同名成员。The public, protected, internal, and private修饰符定义了对接口的访问权限。

        · 指示器和事件。

        · identifier:接口名称。

        · base-list(可选):包含一个或多个显式基接口的列表,接口间由逗号分隔。

        · interface-body:对接口成员的定义。

        · 接口可以是命名空间或类的成员,并且可以包含下列成员的签名: 方法、属性、索引器 。

        · 一个接口可从一个或多个基接口继承。

          接口这个概念在C#和Java中非常相似。接口的关键词是interface,一个接口可以扩展一个或者多个其他接口。按照惯例,接口的名字以大写字母"I"开头。下面的代码是C#接口的一个例子,它与Java中的接口完全一样:

    interface IShape  
    {   
       void Draw ( ) ;  
    }  

    如果你从两个或者两个以上的接口派生,父接口的名字列表用逗号分隔,如下面的代码所示:

    interface INewInterface: IParent1, IParent2 { }  

          然而,与Java不同,C#中的接口不能包含域(Field)。另外还要注意,在C#中,接口内的所有方法默认都是公用方法。在Java中,方法定义可以带有public修饰符(即使这并非必要),但在C#中,显式为接口的方法指定public修饰符是非法的。例如,下面的C#接口将产生一个编译错误。

    interface IShape { public void Draw( ) ; } 

    下面的例子定义了一个名为IControl 的接口,接口中包含一个成员方法Paint:

    interface IControl 
    {  
    void Paint( ) ;  
    }  

    在下例中,接口 IInterface从两个基接口 IBase1 和 IBase2 继承:

    interface IInterface: IBase1, IBase2 {  
       void Method1( ) ;  
       void Method2( ) ;  
    } 

     接口可由类实现。实现的接口的标识符出现在类的基列表中。例如:

    class Class1: Iface1, Iface2 {  
       // class 成员。  
    } 

     类的基列表同时包含基类和接口时,列表中首先出现的是基类。例如:

    class ClassA: BaseClass, Iface1, Iface2 {  
      // class成员。  
    } 

    以下的代码段定义接口IFace,它只有一个方法:

    interface IFace {  
     void ShowMyFace( ) ;  
    } 

    不能从这个定义实例化一个对象,但可以从它派生一个类。因此,该类必须实现ShowMyFace抽象方法:

    class CFace:IFace  
    {  
      public void ShowMyFace( )   {  
        Console.WriteLine(" implementation " ) ;  
      }   
    } 

    C#接口的定义之基接口

          一个接口可以从零或多个接口继承,那些被称为这个接口的显式基接口。当一个接口有比零多的显式基接口时,那么在接口的定义中的形式为,接口标识符后面跟着由一个冒号":"和一个用逗号","分开的基接口标识符列表。

    C#接口的定义之接口基:

    接口类型列表说明:

    •  一个接口的显式基接口必须至少同接口本身一样可访问。例如,在一个公共接口的基接口中指定一个私有或内部的接口是错误的。
    • 一个接口直接或间接地从它自己继承是错误的。
    • 接口的基接口都是显式基接口,并且是它们的基接口。换句话说,基接口的集合完全由显式基接口和它们的显式基接口等等组成。在下面的例子中
    interface IControl {  
     void Paint( ) ;  
    }  
    interface ITextBox: IControl {  
     void SetText(string text) ;  
    }  
    interface IListBox: IControl {  
     void SetItems(string[] items) ;  
    }  
    interface IComboBox: ITextBox, IListBox { }  

    IComboBox 的基接口是IControl, ITextBox, 和 IlistBox。

    •  一个接口继承它的基接口的所有成员。换句话说,上面的接口IComboBox就像Paint一样继承成员SetText 和     SetItems。
    • 一个实现了接口的类或结构也隐含地实现了所有接口的基接口。

     C#接口的定义之接口主体

        一个接口的接口主体定义接口的成员。

    interface-body:  
    {   
    interface-member-declarationsopt } 

    详解C#接口以及实现

           C#接口是什么呢?C#接口(interface)用来定义一种程序的协定。实现接口的类或者结构要与接口的定义严格一致。有了这个协定,就可以抛开编程语言的限制(理论上)。C#接口可以从多个基接口继承,而类或结构可以实现多个接口。C#接口可以包含方法、属性、事件和索引器。接口本身不提供它所定义的成员的实现。接口只指定实现该接口的类或接口必须提供的成员。   

          C#接口好比一种模版,这种模版定义了对象必须实现的方法,其目的就是让这些方法可以作为接口实例被引用。接口不能被实例化。类可以实现多个接口并且通过这些实现的接口被索引。接口变量只能索引实现该接口的类的实例。例子:

    interface IMyExample  
    {  
      string this[int index]  { get ; set ; }  
     event EventHandler Even ;  
     void Find(int value) ;  
     string Point  { get ; set ; }  
    }  
    public delegate void EventHandler(object sender, Event e) ;   

        上面例子中的C#接口包含一个索引this、一个事件Even、一个方法Find和一个属性Point。C#接口可以支持多重继承。就像在下例中,接口"IComboBox"同时从"ITextBox"和"IListBox"继承。

    interface IControl 
     {  
    void Paint( ) ;  
     }  
      interface ITextBox: IControl 
     {  
     void SetText(string text) ;  
    }  
      interface IListBox: IControl
      {  
     void SetItems(string[] items) ;  
     }  
      interface IComboBox: ITextBox, IListBox  { }   

          类和结构可以多重实例化C#接口。就像在下例中,类"EditBox"继承了类"Control",同时从"IDataBound"和"IControl"继承。

    interface IDataBound
      {  
     void Bind(Binder b) ;  
    }  
    blic class EditBox: Control, IControl, IDataBound 
     {  
      public void Paint( ) ;  
    public void Bind(Binder b)  { }  
    }  

         在上面的代码中,"Paint"方法从"IControl"接口而来;"Bind"方法从"IDataBound"接口而来,都以"public"的身份在"EditBox"类中实现。   

    C#接口的总结说明:   

        1、C#中的接口是独立于类来定义的。这与 C++模型是对立的,在 C++中接口实际上就是抽象基类。 

        2、接口和类都可以继承多个接口。

        3、而类可以继承一个基类,接口根本不能继承类。这种模型避免了 C++的多继承问题,C++中不同基类中的实现可能出现冲突。因此也不再需要诸如虚拟继承和显式作用域这类复杂机制。C#的简化接口模型有助于加快应用程序的开发。

        4、一个接口定义一个只有抽象成员的引用类型。C#中一个接口实际所做的,仅仅只存在着方法标志,但根本就没有执行代码。这就暗示了不能实例化一个接口,只能实例化一个派生自该接口的对象。

        5、接口可以定义方法、属性和索引。所以,对比一个类,接口的特殊性是:当定义一个类时,可以派生自多重接口,而你只能可以从仅有的一个类派生。

  • 相关阅读:
    kerberos
    BZOJ 3309 莫比乌斯反演
    Pollard_rho定理 大数的因数个数 这个板子超级快
    POJ 3171 区间覆盖最小值&&线段树优化dp
    拼题 L2-001 紧急救援 最短路计数+记录路径
    HDU 6464 权值线段树 && HDU 6468 思维题
    HDU 1394 线段树求逆序对
    [Poi2010]Bridges 最大流+二分答案 判定混合图欧拉回路
    01背包 多重背包 复习 模板
    CF 2018 Battle of Brains GYM 102062 F
  • 原文地址:https://www.cnblogs.com/jara/p/3450493.html
Copyright © 2020-2023  润新知