当前位置:首页 > 教育培训 >

c语言支持面向对象的程序设计方法(c语言是面向对象的编程语言)

来源:原点资讯(www.yd166.com)时间:2023-06-19 12:22:14作者:YD166手机阅读>>

面向对象设计有诸多优势:可读性强,扩展性强,复用性强

面向对象语言有3大核心技术:

1、封装性

2、继承性

3、多态性

主流面向对象编程语言有:java ,c , python。很遗憾C语言并不是一个面向对象的语言,但是这并不影响C语言的强大,介绍两个C语言的强大的应用场景:操作系统内核设计,编译器设计。虽然C语言不是面向对象编程语言,但是通过一些设计技巧可以实现面向对象设计。接下来我们研究一下如何用C语言实现面向对象设计,本文将用JAVA语言和C语言进行讲解。

封装性

封装是面向对象编程的核心思想。方法和数据通过封装组成一个整体,封装实现了信息的隐藏(隐藏了数据和功能的实现细节),对象只能通过定义的方法与外界进行信息交流。

JAVA语言和C语言是如何定义一个类,如何封装数据和方法。

JAVA语言中通过类将数据和方法封装起来。接下来声明一个名为鸡的类,鸡类中内部包含两个变量:编号和重量,鸡类中实现3个函数:一个构造方法用于初始化鸡的编号和重量;一个给鸡喂食的方法,喂食后鸡的体重增加;一个查询鸡体重的方法。代码如下(本文的代码具有连贯性,后面会引用前面的声明)

c语言支持面向对象的程序设计方法,c语言是面向对象的编程语言(1)

C语言如何实现数据和方法的封装呢?我们可以使用结构体struct ,用C语言实现上述JAVA例程相同功能代码如下:

c语言支持面向对象的程序设计方法,c语言是面向对象的编程语言(2)

上述代码定义了一个结构体,结构体内部包含两个变量:编号和重量,同时还包含3个函数指针:初始化函数指针,喂食函数指针,查询重量函数指针。

JAVA语言和C语言是如何实例对象和操作对象。

JAVA语言实例对象和操作对象,JAVA语言中用new操作符来创建一个对象,创建对象后使用“对象.成员”来调用对象数据和方法,代码如下:

c语言支持面向对象的程序设计方法,c语言是面向对象的编程语言(3)

C语言实例对象和操作对象,C语言使用struct来创建一个对象,创建对象后需要对函数指针进行初始化,完成初始化的对象使用“对象.成员”来调用对象数据和方法,代码如下:

c语言支持面向对象的程序设计方法,c语言是面向对象的编程语言(4)

上述代码例程展示了JAVA和C如何定义一个对象,将数据和方法的封装在对象内部,同时也展示了实例对象和操作对象。

C语言结构体内部不能包含函数只能包含函数指针,因此C语言定义的类相当于JAVA语言中的抽象类。通过封装使得对象方法的工作具体细节对外不可见,外部只能通过调用对象的接口。这样就可以避免一个子系统依赖与另一个子系统。

继承性

继承是面向对象编程技术的一块基石。继承就是子类继承父类的特征和行为,使得子类对象具有父类的属性和方法,此外子类可以定义自己特有的属性和方法,即子类可以对父类进行扩展。继承技术使得程序架构具有一定弹性,增强了程序的复用性,提高了程序的扩展性。

JAVA语言和C语言是如何实现继承。

JAVA语言中通过extends实现继承,假设我们现在需要定义一个母鸡的类,母鸡属于鸡类,所以母鸡有鸡类的所有特性,除此之外母亲还有一个独有的特性:能下蛋。代码如下:

c语言支持面向对象的程序设计方法,c语言是面向对象的编程语言(5)

hen通过extends 继承了chicken的数据和方法,同时hen还定义了母鸡类的独有数据和方法。母鸡类有2个独有的变量:下蛋数量和饲养次数。母鸡类有2个独有的方法:饲养(经过3次饲养后母鸡增加一个蛋),查询下蛋总数的方法。

C语言中如何实现继承,代码如下:

c语言支持面向对象的程序设计方法,c语言是面向对象的编程语言(6)

C语言是通过在结构体内包含另外一个结构体实现继承。子类就完全拥有了父类的数据和方法,同时还能定义独有的数据和方法。

多态性

多态是同一个行为具有多个不同表现形式或形态的能力。多态就是指定义对象和方法在程序运行的不同时刻,可以绑定不同的具体类和具体方法,可以实现多种状态运行。多态性可以从两个方面体现:方法重载,类的上下转型。C语言不支持方法重载和上下转型。

抽象类和接口

JAVA中有两个重要的概念:抽象类,接口。

抽象类

抽象类中可以包含抽象方法(也可以不包含抽象方法),抽象类不能实例化,子类继承抽象父类时需要实现抽象父类中的抽象方法。C语言中定义的类中包含的方法都是抽象方法(函数指针),函数指针可以指向任意符合要求的函数,因此C语言定义的类属于抽象类,使用的时候需要实现函数指针需要指向的函数。

接口

接口类中只能包含抽象方法,接口可以实现多重继承。C语言中可以定义只包含抽象方法(函数指针)的类,C语言定义的类,可以实现多重继承,一个子类可以继承(包含)多个父类。

C语言中使用面向对象设计十分常见,经典例子就是linux中的虚拟文件系统(VFS)。

创作不易希望朋友们点赞,转发,关注。希望获取源码的朋友们在评论区里留言。

作者:李巍

Github:liyinuoman2017

栏目热文

c语言是面向对象的设计语言对吗(c语言是面向对象还是过程的语言吗)

c语言是面向对象的设计语言对吗(c语言是面向对象还是过程的语言吗)

面向对象的三个特征:封装,继承,多态。但是C语言不是面向对象编程语言,所以需要借助一些技巧来实现这三个特征:(1)C语言...

2023-06-19 11:54:12查看全文 >>

c语言是面向对象的编程语言吗(不支持面向对象的编程语言)

c语言是面向对象的编程语言吗(不支持面向对象的编程语言)

c语言和C 到底是什么关系?首先C 和C语言本来就是两种不同的编程语言,但C 确实是对C语言的扩充和延伸,并且对C...

2023-06-19 12:07:49查看全文 >>

c语言为何不是面向对象语言(c语言面向过程还是面向对象)

c语言为何不是面向对象语言(c语言面向过程还是面向对象)

01. 前言面向对象编程(OOP)并不是一种特定的语言或者工具,它只是一种设计方法、设计思想。它表现出来的三个最基本的特...

2023-06-19 12:07:48查看全文 >>

c语言是面向对象的程序设计语言(c语言不是面向对象程序设计语言)

c语言是面向对象的程序设计语言(c语言不是面向对象程序设计语言)

C语言是一种“古老”且应用至今的高级编程语言,它是多种流行编程语言的根源。C 进一步扩充和完善了C语言,是一种面向对象...

2023-06-19 12:04:30查看全文 >>

c语言是一种高级程序设计语言吗

c语言是一种高级程序设计语言吗

c语言具体是什么?普及下什么是C语言,C语言到底有什么用?先了解了之后我们在谈它的难度问题。C语言是一种计算机程序设计语...

2023-06-19 12:03:44查看全文 >>

c语言是模块化程序设计语言吗(c语言模块化设计定义)

c语言是模块化程序设计语言吗(c语言模块化设计定义)

《C程序设计》知识点第1章 C语言概述1.1. C语言属高级语言,区分字母的大小写,以函数为基本单位采用模块化程序设计,...

2023-06-19 11:48:40查看全文 >>

韩剧秘密森林结局是什么(韩剧秘密森林在哪里可以看到)

韩剧秘密森林结局是什么(韩剧秘密森林在哪里可以看到)

在现实生活中,确实有一些婚外情人最终找到了自己的幸福,有些甚至能够走到一起结婚,以下是一些婚外情人美好结局的例子。《红楼...

2023-06-19 12:02:13查看全文 >>

韩剧秘密森林吓人吗

韩剧秘密森林吓人吗

随着一轮又一轮不断重复发生的疫情,我们似乎已经忘了戴上口罩之前的生活是怎么样的,也很难想象疫情到底什么时候会彻底结束。而...

2023-06-19 12:10:39查看全文 >>

秘密森林韩剧分集解说(秘密森林2韩剧电视剧全集免费观看)

秘密森林韩剧分集解说(秘密森林2韩剧电视剧全集免费观看)

第一季水准太高,悬疑 腐败(检警对立)题材太合口味了。2一出来就搬好凳子等更新,每周看完上个礼拜的剧情都忘了个球干净。目...

2023-06-19 12:21:58查看全文 >>

如何评价韩剧秘密森林知乎(韩剧信号和秘密森林哪个好看)

如何评价韩剧秘密森林知乎(韩剧信号和秘密森林哪个好看)

最近刷《秘密森林》,一部韩国犯罪悬疑剧,豆瓣评分高达9.3分,成为2017年评分最高韩剧。讲述儿时经历脑部手术失去情感神...

2023-06-19 12:23:02查看全文 >>

文档排行