← 返回文章流

C语言的头文件与OOP范式的抽象类、接口的异同点

引言 说真的,从去年十一月份开始接触编程,到现在也好几个月了,自认为进步速度较快,但速度快也就导致了深度浅,走马观花式的学习,现在还是有很多理解不深刻的点,今天来仔细研究一下这个问题。我也是先入为主,第一门编程语言学的是Java,所以再接触C,一些概念就混淆了。 C语言模块化设计的核心 头文件本质是对外提供的接口契约,包含函数声明、宏定义、结构体类型声明。例如: // math_utils.h #ifndef MATH_UTILS_H #define MATH_UTILS_H int add(int a, int b); // 函数声明 #endif 编译隔离:通过头文件守卫(#ifndef)实现模块之间的编译隔离。 虽然头文件可以实现函数,但这会破坏模块化。 模块化实现规范 源文件承载具体实现,通过包含对应头文件实现联系 模块间通过extern关键字声明共享全局变量(谨慎使用) 面向对象中的抽象机制 抽象类可以包含部分实现,它的目的是:描述一个公共基类,有共同的特征,有部分方法实现,但另一部分依赖子类自行实现。 接口是一系列方法的声明,一个接口就是在描述一种能力。 设计目标上,抽象类为了代码复用+多台,而接口是行为契约。 设计范式对比 C模块化 vs OOP抽象 抽象粒度:C模块关注功能单元(做什么),而OOP抽象关注对象行为契约(是谁做什么) 扩展方式:C通过函数指针传递上下文,OOP通过继承、实现扩展。

来自 映屿作者主页
在原博客阅读全文 (新标签页打开)

以上内容来自博客订阅源,版权归原作者。关注作者后可以在 关注列表 第一时间查看作者文章。

一起聊聊 0

尊重不同观点

还没有评论。欢迎分享第一个想法。

RSS SUBSCRIPTIONS

选择 RSS 订阅

把博客汇的文章添加到你常用的阅读器。

关注文章 RSS 订阅本订阅需要登录后使用