封装继承多态的关联性

封装

将抽象到的数据和行为相结合,形成一个有机的整体,也就是将数据和操作数据的代码进行有机结合,形成“类”,其中数据和函数都是“类”的成员。提供接口供外界调用,实现数据的隐藏,划分的功能,提高了复用性。(高内聚低耦合)从访问角度考虑就是多态,从范围角度而言就是继承,范围也在扩大。

从{ }角度考虑

从整体角度一步一步扩大范围,在一对{}内视为一个作用范围

复合语句

将一组相关代码封装作为一个整体

函数

将一组相关代码封装在一起并且实现特定功能

将一组相关函数与数据实现整体包装,对外提供调用的接口,实现数据的隐藏,划分功能,提供复用性。

类的组合

类作为类的成员。

类的继承

子类继承父类后,子类范围变大,public继承居多。

多重继承

命名空间

动态库(可以组合)

提供最小系统管理的动态库

继承

在原有类的基础上,进行更具体,更详细的定义;
1、从原有类拿到“所有内容”(除了基类的构造、析构 和 静态成员,还有有元);
2、改造从原有类拿到的东西;(同名函数的隐藏)
3、创造自己的新东西。

继承方式

将原有类型或种类进行衍生的过程,public,private,protected。
子类可以直接调用父类,减少子类代码量
子类可以重写父类的方法,
子类可以创造新的方法

多重继承&单重继承

可以构建类的继承体系,构成类族(族谱),以及类族中的层次关系

虚继承

通过父类指针操作子类,如通过父类指针访问父类的虚函数需要使用::

纯虚继承(抽象工厂)

子类必须实现
如果一个类里面全部都是纯虚函数 ----纯虚基类(抽象类)

多重纯虚继承

子类必须实现多个父类的纯虚接口

多态

多态的书面解释为:

  1. 不同场景表现不同状态
  2. 多态一般指的是通过父类操作子类,但从类族角度出发,指的是通过父类指针操作一个类族;
  3. 如果从纯虚多重继承角度出发,基类制定接口或类族的操作规则,并通过多态方式调用不同子类实现;
  4. 当多重纯虚继承时可以通过父类指针转换方式,切换子类访问范围

个人理解:继承、封装、多态

从使用角度出发没有明显界限

比如: 虚/纯虚继承时通过父类操作子类,这里必须要有继承关系。
那么从继承角度分析继承、封装、多态。

继承目的 是将父类实现的方法继承过来直接使用,分为public、private、protected;从范围上(从封装角度分析),继承后范围在变大,此时从封装角度分析可以将父类和子类视为一个整体。

多重继承 范围变大,从封装角度分析可以将父类和子类视为一个整体.

虚继承 如果子类未重写,那么父类指针调用的是父类实现,如果子类重写,那么父类指针调用的是子类实现 — 多态

纯虚继承/纯虚多重继承,从封装角度来看,纯虚继承/多重纯虚继承对外提供一个整体的一组接口,这个整体可能是一个有父子关系的类族 –多态、封装、继承

纯虚多重继承父类指针横向转换 是改变操作子类范围 —多态、封装、继承

从软件设计角度 符合高内聚,低耦合的特性 而从封装角度–就是内聚, 接口的角度 --就用到了 低耦合的思想,而这些用法就涉及到了设计模式。简单介绍几种

设计模式

抽象工厂

纯虚基类约定上层接口并制定访问规则和范围,当你用的时候屏蔽了子类实现的具体细节,利用上层的规则操作子类的成员

单实例

构造和析构函数私有,提供公有静态方法去实例化对象,通过指针为空判断决定是否实例化对象。通过静态方法获取对象并且保证在运行过程中只有一份

建造者

在创建产品过程中由一个指挥者完成创建过程,而建造者提供全部的对产品配置方法,由指挥者提供多种配置方法指导建造者完成产品配置。

观察者

主要是模块间通信的一种方式
注意 观察者模式使用vector保存父类指针,在发送消息是利用vector保存的父类指针进行通知

享元

多个小对象集中管理
外观 将流程封装在一起,对外只提供一个接口,客户不必关心内部流程处理以及状态转换
模板 父类提供统一的流程以及公共的方法,子类实现定制的方法,由父类统一在流程中统一调用。

发布了3 篇原创文章 · 获赞 1 · 访问量 31
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览