今天,和大家分享一些与类和对象相关的知识。
首先,我们来了解一下,什么是面向过程,什么又是面向对象。
面向对象和面向过程的初步认识
通过一段时间的学习,我们可以感受到C语言的设计更加关注于过程,面对问题,先分析出求解问题的步骤,然后,通过逐步调用函数来解决问题。这个讲专业一点就是C语言面向过程,关注过程。
而对于C++来说,它更加关注于对象。将一件事分解成不同的对象,通过对象之间的交互来完成。说专业一点就是C++面向对象,关注对象。
通过前面的简单陈述,相信大部分同学可能都无法真切的感受到,什么是面向过程,什么是面向对象。
我们再来简单的赘述一下吧。对于C语言,相信大家都不陌生。我们平时是怎么使用C语言来解题的。让我们回想一下,......这思路应该行,这里加个函数,这里再加一个,好了,运行一下。叮咚,过了。这个就是一个典型的面向过程。而为什么C++会是面向对象呢?这是因为它加了封装,把相应的函数封装到一个类中,像一个对象一样。
我们拿外卖系统来作为例子。外卖系统由点单到配送有十分多的步骤,我们通过C语言一一都是实现了,我们现在可以提供外卖服务了,但是C++说,你这个系统的代码太乱了,谁看得懂呀,以后不好维护。我来帮你改改,这些给骑手发送信息,告诉骑手到哪取餐以及预估骑手配送时间等和骑手相关的函数及信息就放到一个类中吧,取名叫骑手。那些和商家相关的信息和功能就放到那个叫商家的类去吧。至于,与顾客相关的信息,自然就放到了名叫顾客的类中啦。
通过C++这一顿骚操作,我们现实生活中的角色,物品等一系列的对象就被映射到了虚拟世界中。哪像名叫顾客、商家以及骑手的这些类,我们该如何定义使用呢?
类的定义
由于类的引用,C++增添了class这个关键词来定义类,在这一更新的同时,为了向前兼容C语言,C++将结构体升级成了类。类中不仅可以定义成员变量,还可以定义成员函数。这时,就会有人问,尽然结构体升级成了类,哪关键子struct岂不是没用了?其实,并没有。关键字struct依然可以像之前一样使用,也可以用来定义类。
这两者定义类的方式都相似,关键子加类的名字再加大括号和分号,就像下面这样:
里面可以放成员函数和成员变量,统称类体。
从上图中上图中,我们可以看到两个关键字定义类的方式是相同的,但它们两也有所区别:关键字struct定义的类,权限默认是公有public。关键字class定义的类,权限默认是私有private。这里还有需要注意的一点是,成员变量的命名方式,我们把目光看到上图的Modefy这个函数。我们发现有两个命名相同的变量,编译器并没有报错,等号右边的是形参,等号左边的是成员变量。这是在它两同时存在的情况下,那如果它们之中的一个出现在该程序里,它究竟是形参还是成员变量?故而,为了方便我们区分它们,避免形参和成员变量混淆的,不知道谁是谁的问题。我们在命名成员变量时,通常会以下划线结尾或者像上图的代码一样,以下滑线来作为开头,亦或者在成员变量前加上my的字样,加以区分成员变量。
对于访问权限私有private和公有public,这两者是什么意思?让我们一起往下看。
类的访问权限
对于类的访问限定符,共有三种。
对于共有public修饰的类体,可以直接被外部访问。而私有private修饰的类体,则不能被外部直接访问。而保护protected在学到继承之前,都可以认为保护proteccted跟私有private的功能是一致的。
对于访问限定符的使用,我们有一点
注意事项:
一个访问限定符的访问权限的作用域,以下一个出现的访问限定符作为结束标志,如果没有就以类域(该类的作用域)的结束位置作为结束标志,也就是类的结束作为结束标志。
对于类有三大特性,分别是封装、继承和多态。
这里我们主要讲封装。
封装
封装,在C++中的意思是,将变量的信息,属性及更改信息的方式、细节都密封起来,不让外部看见,只提供相应的接口给用户。这就好比王者荣耀,我们需要更改名字,只能按着它的步骤去操作,具体是怎么实现的,我们也不知道,只知道使用改名卡这个类似接口的东西,就可以更改名字了。
对于封装不知道屏幕前的理解没?
接下来,我们来看看什么是类的实例化。
类的实例化
我们把类类型创建对象的过程,称之为类的实例化。
类的实例化,通俗来说,也可以理解为定义变量或对象,而类也可以理解为一个类型。对于类相当于一个类型,那这个类型的变量是不是很大,毕竟它里面不仅有成员变量,还有成员函数?事实是真的如此吗?让我们来看一下计算结果?
从图中的运行结果来看,类实例化出来的对象,只开辟了成员变量的空间,(在对象中)并没有为成员函数开辟空间。这是为什么呢?我举个简单的例子你就明白了。
类就好比建筑物的设计图,没法存储东西,我们需要将它实例化,也就是通过设计图,建造出房子,这样才可以住人。人们在房子呆久了,对身体不好。需要建设网球场,羽毛球馆以及健身房等锻炼场所给人们锻炼。考虑到空间资源有限,人们的需求有限,没必要把这些锻炼的场所建到家里去,可以建在公共的地方供大家使用,充分利用好环境资源。成员函数就好比这些锻炼场所,并没有必要每个对象内都存储一份。
好了,到这里,我们本次的分享就到此结束了,不知道我有没有说明白,给予你一点点收获。如果你有所收获,别忘了给我点个赞,这是对我最好的回馈,当然你也可以在评论发表一下你的收获和心得,亦或者指出我的不足之处。如果喜欢我的分享,别忘了给我点关注噢。
【本文由:高防服务器ip http://www.558idc.com/gfip.html 复制请保留原URL】