zoukankan      html  css  js  c++  java
  • 天轰穿C# vs2010 04面向对象的编程之接口简介 【原创】

    在开始讲接口之前,我需要给你明确一个观点,当然,这可能也只代表我的一家之言“接口用来定义两个对象通信的契约;抽象类用来封装一组对象的公用行为规范。”之所以先跟你明确这点是因为相对于接口和抽象类的误解、误用、争论实在太多了,每个人看起来都有道理,但其实又都被人怀疑,当然这其中也包括我。之所以这样,其实也是因为这两个知识点相识之处非常多。

    如果你绝对是一个零基础的初学者,你暂时不用考虑将这两者混合起来使用,你只需要将每一种学懂就行。否则的话,你会觉得仅仅是这两个知识点就足以让你放弃学习了。

    抽象类必须为所有接口成员提供实现。实现接口的抽象类可以将接口方法映射到抽象方法上。例如:

        interface I  //定义接口,关键字是interface

        {

            void M();//接口中的方法、属性、事件等都没有方法体。和抽象方法一样

        }

        abstract class C : I    //和继承类一样的语法,不同的是,可以用逗号分隔已实现多重继承

    {

        //因为无法或者不想实现,于是就用映射为抽象方法,等待下一个派生类来实现。

            public abstract void M(); 

        }

        小天:等等,怎么滴一不小心,就跳到接口上来了?接口又是什么??

    老田:接口(interface)其实也是一种特殊的抽象类,用 interface关键字标记,他的定义没有 class 关键字,他可以包含方法和属性和事件,但是方法也只能是抽象方法(但不需要abstract关键字),任何派生于该接口的类就必须提供执行的代码.任何接口成员前面都不能加修饰符。

     .NET基类库提供了几百个预定义的接口类型,由各种类和结构实现。例如,在第22章中我们会看到,ADO.NET附带了多个数据提供程序,允许我们和某个数据库管理系统进行交互。因此,和基于COMADO不同,在ADO.NET下我们有很多连接对象可以选择(SqlConnectionOracleConnectionOdbcConnection等)。

    尽管每一个连接对象都有唯一的名字,也定义在不同的命名空间中,某些可能还在不同的程序集中,但是所有连接对象都实现了一个叫IDbConnection的公共接口:

    接口简介

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

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

    接口可用的修饰符有 newpublicprotectedinternalprivate。但是同一声明中修饰符只能有一个,new关键字只能出现在镶套接口中,表示复写继承来的同名成员。语法如下:

    //根据惯例,.NET接口类型多以大写字母I作为前缀。我们创建自己的自定义接口也应该遵循

    interface接口名字

    {

        void 方法1();   //无返回值

        string 方法2(); //返回string类型值

        string 属性1 { get; set; } //可读可写的属性

        string 属性2 { get; }   //只读的属性

        string 属性3 { set; }   //只写的属性

        event 委托类型 事件;//声明接口中的事件

    }

    接口和类一样,可以被继承和发展,但不同的是,类继承不仅说明继承也会实现继承,但是接口继承只是说明继承,通俗的说,派生类可以继承基类的方法实现,而派生接口只是继承父接口的方法说明,却没有继承父接口的实现.

    本文章为天轰穿原创作品,转载请注明出处及作者。 

  • 相关阅读:
    ImportError: libXext.so.6: cannot open shared object file: No such file or directory
    Django项目添加日志
    Django项目DEBUG=False时配置静态文件
    Django项目DEBUG=False时配置静态文件
    真的佩服python强大表达力
    mycharm环境建立django项目并增删改查
    Apache配置https
    安卓签名
    Android studion不能启动问题
    带你入门函数式编程
  • 原文地址:https://www.cnblogs.com/thcjp/p/2881286.html
Copyright © 2011-2022 走看看