脱离java的逻辑世界,回归到现实中,我们发现:其实对于任何事情,解决都只有两种方式,即亲历亲为和别人帮忙解决。
就比如: 自己身为一个苦逼的码农,晚上下班,带着疲倦的身躯,一摸肚子,还没吃饭呢。。。
这时,就可以通过三种常见的方式来填饱肚子:
- 下馆子
- 外卖
- 自己做
下馆子和外卖就是会比较方便,省事,但是并不知道做饭的过程,比如干不干净,这对我是不透明的。
买菜自己做的话就相比另外两种麻烦,要买菜、洗菜、炒菜等等。
下馆子和外卖就类似一种面向过程的方式,即让别人来帮你解决问题,这中间的过程对于我们是未知的。
买菜就类似于面向过程的方式,即自己亲历亲为,经历吃饭的每个过程。
这就是现实中的面向对象和面向过程的一个实例。
官方总结一下(咳咳):
什么是面向过程:
面向过程是解决问题的一种思想,当我们在解决问题时,会按照预先设定的想法和步骤,一步步去实现,而具体的每一步都需要我们去实现和操作。这些步骤相互调用和协作,完成我们的需求。
通过上面简单的描述发现,面向过程,其实就是面向着具体的每一个步骤和过程,就是面对具体的每一个功能函数。这些功能函数相互调用,完成需求。
什么是面向对象:
当不再面对具体的每一个方法时,发现操作也变的简单了很多。而封装具体功能的这个类,是我们需要面对的。而基于这个封装了具体功能的类,那怎么使用呢?
当面向封装了具体功能类,若要使用这个类,一般情况下,在java中需要通过创建这个类的实体来使用,这个实体称之为对象。在开发中,我们是在不断的找封装不同功能的类。基于这些类,创建其对象,使用这些对象完成相应的操作。
通过上面的简单讲解,可以分析出:面向对象是基于面向过程,对象是将功能进行了封装。只要找到了具体的类,创建出对象,就可以调用其中的具体功能。面向对象也是用来解决问题的一种思维模式。
以上就是面向过程和面向对象的总结。
回到吃饭,继续思考一下
如果我晚上去下馆子,但是今天这个馆子的师傅也累了,不想做饭,那么他也效仿我一样,从隔壁的食堂买现成的饭,但是隔壁食堂的师傅也不想做饭,找其他的馆子买饭,那这样一直面向对象传递下去,会陷入死循环,到最终,问题也不会被解决。
所以可以发现,面向对象和面向过程这两种解决问题的方式并不是互斥的, 因为事情无论是自己做 还是要别人做 最终都要被处理(过程),即面向过程是最基本的思想,而面向对象是面向过程之上的一种优化方式。
那了解到了面向对象和面向过程的思想,那假如面试官提问:什么是面向对象?
答:
- 记住,首先并不要去说“万物皆对象”,这相当于解释猫就是咪一样,说了和没说一样。
- 你可以先说你理解的面向对象和面向过程的不同,可以用上面吃饭的例子来描述,下来就可以围绕面试官进行讲解:
其实面试官您就是按照面向对象的思想在思考问题,面试官您本身的实力就可以开发很多项目,但是可能项目比较大,您一个人开发时间会比较长,为了提高效率,需要有更多的具备专业开发能力的人来帮助您做事情,这个人就是您所需的对象,只要调用这些对象的开发功能就可以完成项目,只要指挥他们做事情就可以了。