本文内容纯属笔者学习之后的个人理解也综合参考了别的文章,如有疏漏请多多包涵,如有错误烦请指正,如有想法交流非常欢迎在下方评论或者私信
面向对象编程不是某个编程语言专有的,好多语言都支持,比如:Java、c++、c#、Python、JavaScript等语言
大家有时间的话,可以看看面向对象程序设计的由来,链接放在下面
https://www.cnblogs.com/Dr-wei/p/11861849.html
“面向对象”编程是一种思想,这种思想需要我们日积月累写程序才能充分理解
谈面向对象之前必谈的另一个编程思想,那就是面向过程编程思想。所谓的面向过程编程从字面就可以看出来,它强调的是”过程“两个字,以过程为中心强调的是解决某个问题的具体实现步骤,每个细小的步骤用函数表示(函数你就可以理解为解决具体问题的方式)
而面向对象就是强调的是”对象“,谈到这个对象你可能想歪了,此对象非现实的那个男女朋友,而是针对现实的参照,具体的下文会介绍,这个设计思想关键点在于找出解决某些问题的参与者
举个形象的例子,把大象装进冰箱的那个小品都看过吧,来,复习一下,看完记得回来
https://www.bilibili.com/video/BV1HJ411A7WP/?spm_id_from=333.788.videocard.0
这就是一个典型的面向过程思维方式, 打开冰箱,放进去,关冰箱 。其实这还是弱化了这个问题,真正解决这个问题还需要考虑一系列问题,比如:冰箱打开多大,大象能不能装进去,然后大象以什么方式装进去等一系列问题。
而面向对象思维方式就是找里面涉及到的对象就是参与者,分别是人,大象,冰箱,然后把他们分别定义成类,在里面定义这个对象包含的方法(功能),这里面的人能打开冰箱,存储大象,关闭冰箱;冰箱就是能打开和关闭;大象就是能进入冰箱。在使用的时候一步一步调用就好,其实在具体实现细节还是要用面向过程方式解决的,面向对象和面向过程是相辅相成的,不能单独存在的。
看到这里你可能有个疑问,既然面向对象离不开面向过程。那就用面向过程方式实现呗,这个把大象装进冰箱的例子用面向对象方式感觉还复杂,又得找里面参与的对象和方法。我们写软件的时候一般需求不是固定的,经常发生改变,就比如上面那个例子,如果需求一直是大象装进冰箱那面向过程方式没什么问题,万一明天需求变了不把大象装进冰箱了,把大象装进柜子里;后天有需要把狮子装进冰箱,那整套流程都得重新写;如果是用面向对象方式,就需要添加柜子和狮子类,然后使用的时候直接调用即可,整套流程没有太大的变化。这样就达到了扩展性好,实现了可扩展性
再举个例子,汽车厂要造个库里南 2020款 Black Badge,如果用面向过程方式,那就得考虑发动机、底盘、变速器等等哪个先设计出来再一步步生产安装,这款车从计划生产到实际量产的工程量会很大,产完估计都到2021年了。而且还有一个问题,一个汽车厂家不可能就出一款车,如果再决定出一款2020款 6.7T 加规版怎么办呢,只能等前者那款车量产完毕再生产这辆车,而且还得从0开始设计生产组装。那运用面向对象方式怎么做呢,就是把发动机、底盘这些拆出来各找一个生产配件厂商制作出来,然后汽车厂商只需要组装就ok了,然后进行销售。我们经常看同一品牌的车一年出好几个车型的车。这就是忽略具体实现的好处,不需要太关心发动机具体的实现细节等。只需将车按照先后顺序组装在一起就ok了,调用方简单高效。