zoukankan      html  css  js  c++  java
  • 理解C#中的接口

    接口好比一种模版,这种模版定义了对象必须实现的方法,其目的就是让这些方法可以作为接口实例被引用。接口不能被实例化。类可以实现多个接口并且通过这些实现的接口被索引。接口变量只能索引实现该接口的类的实例。
    一个接口定义一个只有抽象成员的引用类型。C#中一个接口实际所做的,仅仅只存在着方法标志,但根本就没有执行代码。这就暗示了不能实例化一个接口,只能实例化一个派生自该接口的对象。
    C#支持接口的多重继承,但是不支持类的多重继承,不可以多重继承而接口可以,)一个类可以有多个基类和多个基接口。 
     

    接口的相关陈述

    1.一个接口定义了一个契约。

    2.接口可以包容方法、C#属性、事件、以及索引器。

    3.在一个接口声明中,我们可以声明零个或者多个成员。

    4.所有接口成员的默认访问类型都是public

    5.如果在接口成员声明中包括了任何修饰符,那么会产生一个编译器错误。

    6.与一个非抽象类类似,一个抽象类必须提供接口中所有成员的实现,只要这些成员在这个类的基类中出现过。

     

    接口的理解

    1.        面向接口编程利用OO的一个基本性质——多态,相同方法不同表现。可以这样想一下,client编写自己程序的时候,如果直接面向一个具体类写程序,那这个程序有个风吹草动的,那client就要受到影响,但如果面向一个接口就不同了,某个具体类变了,只知接口,不知具体类的client就可以完全不动。 都说上层领导比较好当,因为可以干的事通常对老百姓来说是虚的,越虚就越不容易错。
    这个道理在OO中也是适用的。

    2.       换个视角看,面向接口编程反映OO的另一个方面——封装,接口将具体实现封装了起来,可以不影响客户的情况下切换实现

    3.       接口的作用,一言以蔽之,就是标志类的类别(type of class)。把不同类型的类归于不同的接口,可以更好的管理他们。OO的精髓,我以为,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计模式都只针对具备了抽象能力的语言(比如c++javac#等),就是因为设计模式所研究的,实际上就是如何合理的去抽象。(cowboy的名言是抽象就是抽去像的部分,看似调侃,实乃至理)。

  • 相关阅读:
    weex入门篇
    vue项目修改favicon
    IE9 下面, XMLHttpRequest 是不支持跨域请求的解决方法
    angularJS指令动态加载template
    angularJS的ng-repeat-start
    angular指令的详细讲解,不断补充
    实现输入框换行
    vue2.0实现一个模态弹框,内容自定义(使用slot)
    centos7 vnc 无法systemctl启动
    CentOS6.5配置rsyslog
  • 原文地址:https://www.cnblogs.com/jincwfly/p/744926.html
Copyright © 2011-2022 走看看