zoukankan      html  css  js  c++  java
  • 接口的自我理解

    接口(Interface)

    1. 接口是一个约定,实现接口的类或者结构必须遵守该约定。也就是说,接口是类之间交互的协议。

    2. 为什么要有接口

         现实生活中,把一个对象看做多个类型是很常见的,并且有用的。因为对象是什么类型,决定了这个对象有什么属性和行为(Method)。

    这种一个对象看做多个类型的能力通常称为多继承(Multi-Inheritance)。但是通用语言运行时CLR支持单实现继承多接口继承

    3. 单实现继承(Single Implementation Inheritance)是指一个类型只能有一个基类(Base class)。

    4. 多接口继承(Multiple Interface Inheritance)是指一个类型可以继承多个接口,而接口是类之间互交的一个抽象,把类之间需要互交的内容抽象出来定义成接口,可以更好地控制类之间的逻辑交互。

    5. 接口的一个重要特性

          接口只包含成员定义,不包含成员的实现。接口不会继承自任何System.Object派生类型。接口仅仅是一个包含着一组虚方法的抽象类型。不能实例化一个接口。

    6. 实现接口的类必须严格按其定义来实现接口的每个成员。

    7. 常见的DotNet框架中的接口:

          a. IComparable     

                定义了通用的比较方法。如果一个类要实现与其他对象比较,则必须实现IComparable接口。

          b. IEnumerable

                IEnumerable接口公开枚举数,该枚举数支持在集合上进行简单的迭代。IEnumerable接口可以由支持迭代内容对象的类实现。

          c. IEnumerator接口

                IEnumerator接口支持在集合上进行简单的迭代。是所有枚举数的及接口。枚举数只允许读取集合中的数据,无法用于修改基础集合。

          d. ICollection接口

                ICollection接口定义了所有集合的大小,枚举数和同步方法。

          e. IDictionary接口

                IDictionary接口是基于ICollection接口的更专用的接口。实现是键/值对的集合,如HashTable类。

          f. IList接口

                IList接口实现是可被排序且可按照索引访问其成员的值的集合,如ArrayList。

    8. 接口与抽象类

          抽象类(Abstract Class)和接口在定义与功能上有很多相似的地方。使用哪个,需要比较抽象类和接口之间的具体差别。

          抽象类是一种不能实例化而且一定要被继承的类。抽象类可以提供实现,也可以不提供实现。同样,子类只能从一个抽象类继承。抽象类主要应用于关系密切的对象。如果要设计大的功能单元或创建组件的多个版本,则使用抽象类。

          接口完全抽象的成员集合,不提供实现。类或者结构可以继承多个接口。接口最合适为不相关的类提供通用的功能。如果要设计小而简练的功能块,则使用接口。接口一旦创建就不能修改了,如果需要接口的新版本,必须创建一个全新的接口。

    9. 接口的实现

          接口的实现分为2种:隐式实现(Implicit Implementation)和显式实现(Explicit Implementation)。

          如果类或者结构要实现的是单个接口,可以使用隐式实现;

          如果类或者结构继承了多个接口,那么接口中相同名称成员就要显示实现。(显示实现是通过使用接口的完全限定名来实现接口成员的。)

    Desire has no rest.
  • 相关阅读:
    OO第二单元——多线程(电梯)
    OO前三次作业思考(第一次OO——Blog)
    P2016 战略游戏——树形DP大水题
    P1108 低价购买——最长下降子序列+方案数
    P1041 传染病控制——暴力遍历所有相同深度的节点
    P2502 [HAOI2006]旅行——暴力和并查集的完美结合
    2019.10.25字符串——zr
    P3719 [AHOI2017初中组]rexp——递归模拟
    树状数组优化最长上升子序列
    P1378 油滴扩展——搜索小记
  • 原文地址:https://www.cnblogs.com/samcn/p/1450807.html
Copyright © 2011-2022 走看看