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

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

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

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

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

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

  • 21
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值