zoukankan      html  css  js  c++  java
  • 学习接口和抽象类

    接口和抽象类的使用是大家经常讨论的问题,什么时候使用接口,什么该用抽象类,两者经常交叉在一起,对它们进行彻底的分析是很有必要的。


    接口是包含一组虚方法的抽象类型,其中每一种方法都有其名称、参数和返回值,接口方法不能包含任何实现。

    抽象类提供多个派生类共享基类的公共定义,它既可以提供抽象方法,也可以提供非抽象方法。抽象类不能实例化,必须通过继承由派生类实现其抽象方法,因此对抽象类不能使用new关键字,如果派生类没有实现所有的抽象方法,则该派生类也必须声明为抽象类,在抽象方法声明中不能使用 static 或 virtual 修改符, 实现抽象方法由override方法来完成。  


    相同点:

    都不能被直接实例化,都可以通过继承实现其抽象方法。

     
    不同点:

    接口支持多继承,抽象类不能实现多继承

    接口只能定义抽象规则,抽象类既可以定义规则,还可以提供已实现的成员。

    使用规则与场合:

    接口中不能定义字段,也不能有实现的方法,抽象类中可以定义字段,包括实现的方法;

    尽量将接口设计成单一的功能,保持接口不变是设计时首要考虑的问题, 扩展时,应该增加新的接口,而不要更改现有接口,因为向接口中添加新成员,会导至修改所有的派生类,并重新编译;

    如果预计会出现新功能需要扩展,设计时考虑使用抽象类,抽象类主要应用于关系密切的对象,而接口适合为不相关的类提供通用的方法。  

    对于这个两概念的深入理解,还应该建立在不断实践的基础上,实践出真理。

  • 相关阅读:
    《Cracking the Coding Interview》——第7章:数学和概率论——题目4
    《Cracking the Coding Interview》——第7章:数学和概率论——题目3
    《Cracking the Coding Interview》——第7章:数学和概率论——题目2
    最小二乘拟合
    设置手机邮件下载文件路径
    #pragma data_seg() 共享数据// MyData段 // 进程 // DLL
    树状数组板子 x
    博弈论 x
    luogu P1147 连续自然数和 x
    luogu P1068 分数线划定 x
  • 原文地址:https://www.cnblogs.com/fredx/p/1622466.html
Copyright © 2011-2022 走看看