用简单的例子解释什么是面向对象

什么是面向对象OO:能够先看下 https://www.jianshu.com/p/224d8fc4d0f0
提起面向对象,确定都会先想到三大特性:封装,继承,多态。那这三大特性具体怎么理解呢?能够先在脑子里过一下。
如题,举个栗子吧:
在这里插入图片描述
假如咱们接到一个需求,须要把大象装进冰箱里!
面向过程的作法:打开冰箱门,把大象装进去,关上冰箱门。这是一个过程,咱们会把这个过程拆分为三个小步骤而且去想办法实现他们。
面向对象的作法:冰箱调用开门的方法开门,大象调用移动位置的方法进入冰箱,冰箱调用关门方法把门关上。这种是把这个过程里的冰箱和大象抽象出来,冰箱是一个对象,大象是一个对象。冰箱拥有开门,关门的方法,大象拥有移动位置的方法。他们各自处理各自的事情,咱们不用关心冰箱怎么开门关门,大象怎么把本身塞进去,咱们只用告诉冰箱,嘿,我如今要你把大象装进去,你装好了告诉我web

看起来好像面向过程更加简单,确实在一些简单的逻辑上,确实是面向过程更加简单一点,可是当你面对是一系列复杂的模块和功能或者在逻辑发生更改的时候。各司其职的面向对象思想变会将不少复杂的逻辑简单化。编程

拿上面那个栗子来讲,冰箱,大象,分别处理各自的事情,下降了逻辑之间的耦合性。咱们在作业务处理时没必要关心冰箱是怎么开门关门,大象怎么移动位置的,咱们只须要只要他们有这两个动做,通知他们去作这些动做完成咱们的业务逻辑就能够了。
那你可能要问了,冰箱怎么开门关门,大象怎么移动位置不还要咱们去写吗?是的,没错,面向对象编程须要在前期进行大量的准备工做。可是这些准备工做,在后面业务逻辑愈来愈复杂的时候,就显得尤其重要,由于在后期业务逻辑极其复杂的时候,若是我要添加功能,你不可能每次作事以前都理一下以前的逻辑,看看是否是会不会影响到后面。svg

上面说的,冰箱开门关门,大象移动位置其实就是三大特性里的封装了,为冰箱和大象封装了属于他们的各自的方法。.net

如今咱们需求变了,咱们要把大象放进笼子里,若是用面向过程的作法,咱们须要把以前装冰箱的方法重写一遍,变成成装笼子。也太麻烦了。
用OO的思想,咱们须要一个笼子的对象,笼子也一样有开门和关门两个动做,跟冰箱很像啊,这个时候三大特性之一的继承就登场了,咱们只须要用笼子继承冰箱,再用笼子替换掉以前代码里的冰箱就能够了以下图,笼子也有了开门和关门两个动做,而制冷属于冰箱的私有的属性,笼子没法继承到。
在这里插入图片描述
多态 简单的理解起来,冰箱能够有不少种不一样牌子的冰箱,他们多是双门的,多开门的各类。可是他们都属于冰箱,拥有冰箱的基本功能,同时他们又有各自不一样的特点功能。
我这里对于三大特性说的可能不太细,详情参见:https://blog.csdn.net/xiaouncle/article/details/53301523
以上理解若是有问题,欢迎大佬指点!xml