纯虚函数

纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中定义纯虚函数的方法(virtual ReturnType Function()= 0)。

抽象类

带有纯虚函数的类称为抽象类。抽象类是一种特殊的类,它是为了抽象和设计的目的而建立的,它处于继承层次结构的较上层,抽象类是不能定义对象的。

接口

如果一个类里面只有纯虚函数,没有其他成员函数和数据成员,就是接口类。

既然有抽象类,为什么要用接口呢?

接口带来的最大好处就是避免了多继承带来的复杂性和低效性,并且同时可以提供多重继承的好处。接口和抽象类都可以体现多态性,但是抽象类对事物进行抽象,更多的是为了继承,为了扩展,为了实现代码的重用,子类和父类之间体现的是is-a关系;接口则更多的体现一种行为约束,一种规则,一旦实现了这个接口,就要给出这个接口中所有方法的具体实现,也就是说实现类对于接口中所有的方法都是有意义的。

在设计类的时候,首先考虑用接口抽象出类的特性,当你发现某些方法可以复用的时候,可以使用抽象类来复用代码。简单说,接口用于抽象事物的特性,抽象类用于代码复用。

C++抽象类和接口的区别相关推荐

  1. 不允许使用抽象类类型的对象怎么办_Java基础——面试官:你来说说抽象类和接口的区别...

    无论你是新手Java 程序员,还是老手程序员,可能在实际开发中很少自己写抽象类. 但是抽象类在某些时候的功能很强大,可以保证子类中百分百实现父类中的方法 -- 普通类的弊端,消除子类的冗余代码 -- ...

  2. php 抽象类 接口 区别,PHP中抽象类、接口的区别与选择分析

    本文实例分析了PHP中抽象类.接口的区别与选择.分享给大家供大家参考,具体如下: 区别: 1.对接口的使用是通过关键字implements.对抽象类的使用是通过关键字extends.当然接口也可以通过 ...

  3. C#中抽象类和接口的区别

    一.抽象类:       抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆 ...

  4. C#中抽象类和接口的区别与使用

    一.抽象类: 抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们.另外 ...

  5. 1.13 抽象类和接口的区别

    接口是一种特殊的抽象类,接口和抽象类的渊源颇深,有很大的相似之处,所以在选择使用谁的问题上很容易迷糊. 1)抽象类 在 Java 中,被关键字 abstract 修饰的类称为抽象类:被 abstrac ...

  6. C#抽象类与接口的区别【转】

    C#抽象类与接口的区别[转] 一.抽象类:      抽象类是特殊的类,只是不能被实例化(可以用派生类实例化基类对象):除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法(当然它可以有普通方法 ...

  7. 问题小结(二)——maven的核心功能、面向对象编程和面向接口编程的区别、抽象类和接口的区别等

    文章目录 1. Java创建对象有哪四种方式? 2. 什么是maven?maven的核心功能有哪些? 3. 什么是MVC?说说分层的好处. 4. Spring的两大核心技术是什么? 5. 什么是IOC ...

  8. Java11-day02【多态(成员访问、多态转型、内存图解)、抽象类(成员特点)、接口(成员特点)、类和接口的关系、抽象类和接口的区别、综合案例】

    视频+资料(工程源码.笔记)[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:zjxs] Java基础--学习笔记(零起点打开java ...

  9. C++中的抽象类以及接口的区别联系

    一.抽象类和接口 抽象类: 抽象类是特殊的类,不能被实例化(将定义了纯虚函数的类称为抽象类):除此以外,具有类的其他特性: 重要的是抽象类可以包括抽象方法,这是普通类所不能的,但同时也能包括普通的方法 ...

  10. 第三次学JAVA再学不好就吃翔(part38)--抽象类与接口的区别

    学习笔记,仅供参考 文章目录 面向对象 接口 类和接口的关系 抽象类与接口的区别 案例学习 面向对象 接口 类和接口的关系 类与类的关系 继承关系,并且只能单继承,不能多继承,但是可以多层继承 类与接 ...

最新文章

  1. ARM Linux (S3C6410架构/2.6.35内核)的内存映射(三)
  2. 交换排序之——冒泡排序(c/c++)
  3. codemirror mysql_CodeMirror 实现 JavaScript、 MySql 关键字的变色和自动实时提示 autocomplete...
  4. python中用来回溯异常的模块_python学习笔记(异常)
  5. arcgis 分区 属性值_ArcGIS制图之Maplex自动点抽稀
  6. 洛谷 P1129 [ZJOI2007]矩阵游戏 解题报告
  7. 电商、快递最后一公里的解决方案
  8. WIN10中DOCKER的安装
  9. Maven - 基础入门与安装配置
  10. 工厂供电MATLAB仿真,工厂供电课程设计---基于MATLAB的电力电子系统仿真
  11. Python之Eclipse环境下安装与配置
  12. 如何更有效地从阅读中汲取知识?
  13. mysql 类似 oracle connect by_mysql实现层级查询,相似oracle里的connect by prior
  14. nand flash 读写测试
  15. 基于SSM实现学生竞赛管理系统
  16. 数据结构c语言课程设计报告,数据结构c语言课程设计报告.doc
  17. 计算机房管理制度通知,计算机房管理制度.doc
  18. anbox 使用情况_如何在Linux PC上启动并运行Anbox?
  19. Android GreenDao
  20. 防火墙、路由器、交换机+模拟软件+流控

热门文章

  1. 软件项目经理新手上路6 - 不要进行小改进
  2. Spring入门到精通(二)
  3. WARNING: This is a development server. Do not use it in a production deployment.
  4. windows 10 关键错误,“开始”菜单无法使用,Cortana无法使用 无法工作的两种解决方法,实测可行
  5. [python] 函数的缺省参数和注意事项
  6. R语言-相关性分析函数
  7. 火了!开源的Python抢票神器,过年回家就看这一波了!
  8. 网络中链路复用的优缺点及交换机作用分析
  9. iframe 跨域处理
  10. 哪些自动化工具赋能电商运营效率翻倍?