C语言和设计模式(继承、封装、多态)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
记得还在我们大学C++第一门课的时候,老师就告诉我们说,C++是一门面向对象的语言。C++有三个最重要的特点,即继承、封装、多态。等到后来随着编码的增多和工作经验的积累,我也慢慢明白了面向对象的含义。可是,等我工作以后,使用的编程语言更多的是C语言,这时候我又想能不能把C语言变成面向对象的语言呢?等到后来通过思考和实践,我发现其实C语言也是可以面向对象的,也是可以应用设计模式的,关键就在于如何实现面向对象语言的三个重要属性。
(1)继承性
typedef struct _parent
{int data_parent;}Parent;typedef struct _Child
{struct _parent parent;int data_child;}Child;
在设计C语言继承性的时候,我们需要做的就是把基础数据放在继承的结构的首位置即可。这样,不管是数据的访问、数据的强转、数据的访问都不会有什么问题。
(2)封装性
struct _Data;typedef void (*process)(struct _Data* pData);typedef struct _Data
{int value;process pProcess;}Data;
封装性的意义在于,函数和数据是绑在一起的,数据和数据是绑在一起的。这样,我们就可以通过简单的一个结构指针访问到所有的数据,遍历所有的函数。封装性,这是类拥有的属性,当然也是数据结构体拥有的属性。
(3)多态
typedef struct _Play
{void* pData;void (*start_play)(struct _Play* pPlay);
}Play;
多态,就是说用同一的接口代码处理不同的数据。比如说,这里的Play结构就是一个通用的数据结构,我们也不清楚pData是什么数据,start_play是什么处理函数?但是,我们处理的时候只要调用pPlay->start_play(pPlay)就可以了。剩下来的事情我们不需要管,因为不同的接口会有不同的函数去处理,我们只要学会调用就可以了。
C语言和设计模式(继承、封装、多态)相关推荐
- C++设计模式-继承与多态影响耦合性(最基础的简单工厂模式小实例)
继承与多态影响耦合性(最基础的简单工厂模式小实例) 原理: 通过继承和虚函数的方式修改某个子类对应函数的功能: 通过简单工厂模式到底实例化谁; 如果要增加复杂的运算只有增加响应的子类,以及工厂的分支即 ...
- 面向对象之三大特性:继承,封装,多态
python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分 ...
- java 继承 封装 多态 详解
1.继承 1.1子类能够继承父类的哪些成员? 1.1.1 public 成员 1.1.2 protected 成员 1.1.3 同一个包中:缺省访问类型的成员 1.1.4 打死不能继承private成 ...
- 继承 封装 多态 (基础)描述性理解
面向对象程序设计具有:封装性,继承性,多态性. 1封装 封装是面向对象编程的核心思想.将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想.例如我们使用的电脑,电视, ...
- Java语言高级-02继承与多态-第4节 多态
多态的概述 面向对象的三大特征:封装性,继承性.多态性 extends继承或者implements实现,是多态性的前提 多态的格式与使用 package demo05; /* 代码当中体现多态性,其实 ...
- JavaScript 继承 封装 多态实现及原理详解
封装 就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. 封装是面向对象的特征之一,是对象和类概念的主要特性. 简单的说,一个类就是一个封装了 ...
- Java语言高级-02继承与多态-第7节内部类
内部类的概念和分类 如果一个事物的内部包含另一个事物,那么这就是一个类内部包含另一个类 例如:身体和心脏的关系.又如:汽车和发动机的关系. 分类: 1.成员内部类 2.局部内部类(包含匿名内部类) 成 ...
- 【Java设计模式 面向对象设计思想】一 再谈面向对象和封装、抽象、继承、多态四大特性
回看最初的目标:[Java设计模式 学习目标及大纲]高质量代码的标准及实现路径在这篇Blog里我们明确了什么是高质量的代码:易维护.易读.易扩展.灵活.简洁.可复用.可测试,也知道高质量代码的达成路径 ...
- 前端 JavaScript 设计模式前奏--面向对象-封装、继承、多态
JavaScript 面向对象 如图所示: 1. 什么是面向对象 1. 面向对象的概念 2. 面向对象的三要素: 继承/封装/多态 ⭐️ 3. JS 的应用举例 4. 面相对象的意义 --- 数据结构 ...
- 设计模式学习笔记(四)封装、继承、多态、抽象能解决什么问题?
面向对象编程及面向对象编程语言的关键就是理解其四大特性:封装.抽象.继承.多态. 1. 封装(Encapsulation) 所谓封装性,封装也叫做信息隐藏或者数据访问保护.类通过暴露有限的访问接口,授 ...
最新文章
- WindowsPhone基础琐碎总结-----数据绑定(一)
- java算法 第七届 蓝桥杯B组(题+答案) 3.凑算式
- 申请美国计算机科学,美国计算机科学(Computer Science)申请条件
- 使用Apache Lucene 4.3轻松进行搜索
- .net 笔记尝试(二)
- 大学生期末网页制作代码以及网页设计排版技巧
- Google I/O 2021:在重要时刻提供帮助
- curl api接口获取当前IP地址
- 年中大促,华硕破晓PX574特惠专场,直降400!
- 【谁年轻时没YY过】财务自由后的某一天
- SingleTask和SingleInstance详解
- Tengine-Kit人脸检测及关键点
- 图书馆数据库资源访问方法
- 风清清,雨霖霖,青剑低啸吟,月色如银
- Today今天便利店的梦想:准独角兽的雄心与挑战 1
- 2022年,元宇宙是否能结束争议?
- Eclipse汉化教程(详细图解)
- Qt之QTableView、QTableWidget
- 2020年系统集成项目管理工程师考试目标及要求
- Tiva C(TM4C)的bootloader和启动过程与stm32对比