周末午后,我正在愉快的打着王者荣耀,五杀在即之际 。女朋友拿着一本我看过的《面向对象编程》过来找我 。
什么是面向对象?是要面向我写代码吗?

文章插图
不是啦,这个面向对象的对象不是你这个对象啦 。

文章插图
此时,我突然感受到了一股莫名的杀气 。
什么?你还有其他对象吗?有我好看吗?有我瘦吗?不对 。你不能有其他对象 。

文章插图
什么是面向对象?
面向对象,英文名字叫Object Oriented,是一种软件开发方法 。是和面向过程相对应的 。
别给我拽英文 。给我详细说说,说不明白今天就没完 。
我有点饿了,要不然你给我做点饭,我慢慢的详细给你讲吧 。

文章插图
我现在就想听你给我讲,咱们直接点外卖吧,别自己动手做饭了 。

文章插图
其实,对于吃饭这件事儿,就可以分为面向过程吃饭和面向对象吃饭 。自己亲自下厨就是面向过程,点外卖就是面向对象 。
在面向过程的吃饭中,我们想要填饱肚子,需要自己亲自下厨把这顿饭做出来,那么,我们就需要先想好吃什么、然后去买菜、洗菜、洗米、蒸饭、炒菜等等一系列的事情 。
pubic void 做饭(){ 制定菜单(); 买菜(); 洗菜(); 洗米(); 蒸饭(); 炒菜();}
那么,你说和点外卖相比,自己做饭有哪些缺点啊?

文章插图
那还用说,麻烦呗 。

文章插图
的确,面向过程编程也一样,由于想要完成做饭这件事,需要自己定义很多个方法 。除此之外,还有很多遇到很多其他问题,比如:
我不想吃米饭,我想吃馒头 。
上次买的菜家里面还有,不需要去买菜 。
中午吃剩下的菜家里面还有,直接热一热就可以吃了 。
这次去的一家超市提供洗菜服务,不需要我们自己洗菜了 。
以上这些突发事件,在编程中就叫做需求变更或者新的需求,这种事情发生是必然会发生的 。
那么,有新的需求了怎么办,上面这种自己动手做饭的场景,就只能重新拼凑咯 。
对于程序员来说,就需要通读代码,找出可以复用的方法,然后重新调用,不能复用的就重新写一个 。时间久了,方法就会越来越多,系统维护越来越复杂 。
面向对象,其实就是我们通过点外卖的方式来“做饭” 。我们知道我们需要一顿饭,我们只需要打开外卖软件,在里面选择我们需要的菜品然后下单就可以了 。我们不关心饭店做饭的过程 。想吃什么点什么,家里来人了就再下一个订单,不想吃米饭了,想吃馒头了,也可以给饭店打电话,让他们把米饭换成馒头 。
外卖软件.点餐(红烧肉,糖醋鱼,可乐一瓶).送达时间(一小时后).备注(可乐加冰)
所以,通过面向对象的方式“做饭”,就像上面的代码一样 。
哦,我明白了,面向对象就是把本来可能需要自己做的事情交给别人来做?对于我来说,外卖软件就是个对象,我再面向他“做饭”,其实是他帮我做的 。

文章插图
【漫画:如何给女朋友解释什么是面向对象编程?】额、你说的也对,也不对 。在这个场景中,确实可以把外卖软件当做是「对象」 。其实,在面向对象编程中,抛弃了函数,想要实现一个功能不再是通过函数的叠加调用实现的了 。而是通过对象 。

文章插图
对象就是对事物的一种抽象描述 。现实世界中的事物,都可以用「数据」和「能力」来描述 。
比如我要描述一个人,「数据」就是他的年龄、性别、身高体重,「能力」就是他能做什么工作,承担什么样的责任 。
描述一个外卖软件,「数据」就是他包含的菜品,而「能力」就是他可以点菜 。
什么是封装?
推荐阅读
- 什么是端口转发?什么是端口映射?如何设置端口映射?
- 抖音火山版怎么赚火力 抖音火山版如何使用
- iphone铃声开场原版 iphone如何设置铃声
- MVP战绩支持分享 王者荣耀如何分享游戏
- 快手新主播直播技巧 快手直播新手如何直播
- 开一年纯电动车能比燃油车省出几个钱?来给你算一笔账
- 手机连接WiFi后,要不要关闭数据流量?中国移动给出了答案
- 初学跑步如何循序渐进?3个步骤让你爱上跑步
- 北京自己如何交社保
- 如何判断发动机有没有积碳?老师傅教你一招,不用拆缸
