cpp面向对象三大特性
C++面向对象的三大特性:继承、多态、封装
继承
子类可以直接使用父类的属性和方法。
优点:
- 减少代码的重复性\冗余
- 继承是多态的前提
- 增加了类的耦合性
缺点:
- 继承在编译时刻就定义,无法在运行时改变父类继承的实现
- 父类通常定义了子类的部分方法,父类的改变可能影响子类的行为
TODO
虚继承:解决多重继承中的二义性问题,维护了一张虚基表
多态
C++多态分为运行时多态和编译期多态
- 静态多态
- 在编译期就确定
- 主要通过模板实现,以及函数重载、宏定义,也是实现静态多态的方法
- 动态多态
- 通过虚函数实现
- 即基类中的一些方法被定义为接口,在子类中必须重写和实现这些接口
- 这样,可以通过调用 基类的指针或者引用,来指向子类对象,从而可以调用子类的对应接口函数实现不同功能
- 因为是 函数调用机制是 在执行期 才能确定,因此是动态多态
- 通过虚函数实现
优点:
- 1 大大提高代码的可重用性
- 2 提高代码的可维护性以及可扩充性
缺点:
- 1 可读性不太好,调试起来可能困难
- 2 模板只能定义在.h文件,当工程大了之后,编译时间很久
封装
隐藏对象的属性和实现细节,仅对外界提供接口和方法
优点:
- 1 隔离变化
- 2 便于使用
- 3 提高复用性
- 4 提高安全性
缺点:
- 1 封装太多影响效率
- 2 使用者难以知道实现细节
cpp面向对象三大特性相关推荐
- 【Python学习笔记】面向对象三大特性
2019独角兽企业重金招聘Python工程师标准>>> ★面向对象:封装.继承和多态是面向对象的三大特点★ 面向对象编程简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元 ...
- python 面向对象(三大特性)
python 面向对象(初级) (思维导图 ↑↑↑↑↑) 概述: 面向过程:根据业务逻辑从上到下垒代码. 函数式:将某功能代码封装至函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类 ...
- [.net 面向对象编程基础] (13) 面向对象三大特性——多态
[.net 面向对象编程基础] (13) 面向对象三大特性--多态 前面两节,我们了解了面向对象的的封装和继承特性,面向对象还有一大特性就是多态.比起前面的封装和继承,多态这个概念不是那么好理解.我们 ...
- 【Python面试】 说说Python面向对象三大特性?
往期面试题: 谈谈对 Python 和其他语言的区别? 说说 Python 解释器种类以及特点? 说说4种常用编码的区别? 废话不多说,开始今天的题目: 问:说说Python面向对象三大特性? 答:P ...
- python面向对象三大特性、类的约束、print带颜色输出及super补充
面向对象三大特性.类的约束.print带颜色输出及super补充 简述: python面向对象的三大特性: 1.继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为 ...
- python面向对象三大特性_Python面向对象之多态原理与用法案例分析
本文实例讲述了Python面向对象之多态原理与用法.分享给大家供大家参考,具体如下: 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 ...
- Python OOP:面向对象三大特性(封装、继承、多态)、类属性和实例属性、类方法@classmethod、静态方法@staticmethod、函数和类callable、__call__
一.面向对象三大特性 二.多态 定义:多态是⼀种使⽤对象的⽅式,⼦类重写⽗类⽅法,调⽤不同⼦类对象的相同⽗类⽅法,可以产⽣不同的执⾏结果. 一个父类,可以继承给多个子类,每个不同的子类可以创建多个对象 ...
- java 面向对象多态_乐字节Java面向对象三大特性以及Java多态
以上就是本次学习的6大任务.我们依次来看. 1 Object类 Object类是所有Java类的根基类. 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类. cla ...
- python面向对象三大特性6大原则_【Python学习笔记】面向对象三大特性
★面向对象:封装.继承和多态是面向对象的三大特点★ 面向对象编程简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程序视为 ...
最新文章
- JDK1.6官方下载
- 《算法竞赛入门经典》习题3-1 得分(Score,ACM、ICPC Seoul 2005,UVa1585)
- C#中析构函数,命名空间及字符串的运用(Ninth day)
- 计蒜客 91 地铁 HDU 5263 平衡大师(二分+网络流)
- 前端学习(172):格式化文本
- 人工智能风险分析技术研究进展
- java 异常对象_在java中的异常处理中的异常对象是什么
- 查看静态库(.a文件)内容
- frameset和iframe的区别
- 嵌入式Linux系统编程学习之十五sigaction信号处理机制
- Linux常用命令(补充)--其他
- 吴恩达|机器学习作业5.0.偏差与方差
- lammps教程:单原子应力计算及应力云图绘制方法
- STC8PROG - Linux下的 STC8G STC8H 烧录工具
- 【Dll调试】DLL调试方法
- 群晖7.X关闭双重验证(OTP)的方法
- 产品经理们都是怎样成为产品经理的?
- 多边形颜色渐变填充C语言,vb6:用渐变填充多边形
- Oracle设计简单的图书管理
- Linux Nginx安装配置及HTTPS配置