zoukankan      html  css  js  c++  java
  • 在类和接口之间选择

    接口定义实施者必须提供的一组成员的签名。接口不能提供成员的实现细节。例如,ICollection 接口定义与使用集合相关的成员。实现该接口的每个类都必须提供这些成员的实现细节。类可以实现多个接口。

    类定义每个成员的成员签名和实现细节。Abstract(在 Visual Basic 中为 MustInherit)类的行为在某方面与接口或普通类相同,即可以定义成员,可以提供实现细节,但并不要求一定这样做。如果抽象类不提供实现细节,从该抽象类继承的具体类就需要提供实现。

    虽然抽象类和接口都支持将协定与实现分离开来,但接口不能指定以后版本中的新成员,而抽象类可以根据需要添加成员以支持更多功能。

    优先考虑定义类,而不是接口。

    在库的以后版本中,可以安全地向类添加新成员;而对于接口,则只有修改现有代码才能添加成员。

    请使用抽象(在 Visual Basic 中为 MustInherit)类,而不要使用接口来分离协定与实现。

    如果需要提供多态层次结构的值类型,则应定义接口。

    值类型必须从 ValueType 继承,并且只能从 ValueType 继承,因此值类型不能使用类来分离协定和实现。这种情况下,如果值类型要求多态行为,则必须使用接口。

    请考虑定义接口来达到类似于多重继承的效果。

    如果一个类型必须实现多个协定,或者协定适用于多种类型,请使用接口。例如,IDisposable 是由许多不同情况下使用的类型实现的。如果要求从基类继承的类可处置,会使类层次结构很不灵活。MemoryStream 等应从其父类继承基于流的协定的类,不可能还是可处置的。

     


    作者:GangWang
    出处:http://www.cnblogs.com/GnagWang/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

     
  • 相关阅读:
    windows下建立多重文件夹
    one-hot向量,softmax向量和反向传播
    牛客网高级项目实战课第一章
    Mysql索引的创建与删除
    Tomcat服务器
    JavaWeb基本概念
    Windows系统下Elasticsearch集群搭建
    数据结构之排序算法1
    如何求一个数的平方根
    数据结构之查找算法
  • 原文地址:https://www.cnblogs.com/GnagWang/p/1701703.html
Copyright © 2011-2022 走看看