在我们的日常开发中,所谓的面向对象可能就是在代码设计时,尽可能的使用对象去定义我们任何想要定义的东西。却真的往往忽略了其真正的意义。
百度百科的解释
面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术 [1] 发展到一定阶段后的产物。
从自身的理解出发
首先我们要明白JAVA中的面向对象设计绕不开这四个特点:
-
抽象:将相同的类的共同特征总结出来,构造成类的过程。包括数据抽象以及行为抽象。数据抽象变成类的成员变量,行为抽象变成类的成员函数。抽象只关心成员变量以及成员函数,并不关系具体的实现细节。
-
封装:封装其实可以理解为:“装”与“封”,就是把数据以及操作方法封装在函数里/类,然后再装起来。也就是把数据以及操作数据的方法绑定起来,对外界提供已经定义好的接口进行访问。面向对象的本质就是将现实世界描绘成一系列的完全自治,封闭的对象。可以理解为我们无论内部实现有多复杂,使用者可以完全不用理,只需要知道怎么使用就可以了。
-
继承:继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
-
多态:在面向对象语言中,接口的多种不同的实现方式即为多态。
我们可以这么理解:假如我们要制造汽车,那么在我们看来汽车就是对象
首先我们要知道汽车都有哪些最基本的特征?
比如:轮胎,发动机,变速箱等(这个过程就是抽象)
因为制造汽车是相当高的难度,我们不可能把每个零件都自己去制造,那么怎么办?我们只好去购买其他厂商线程的零件,比如发动机厂商引进发动机,变速箱厂商引进变速箱。我们不需要关心发动机或者变速箱是如何生产出来的,只需要将这些零件通过自己的设计组装起来。(那么在这里发动机和变速箱制造技术就是封装的一种体现)。
那么当我们制造出第一辆汽车的时候,我们就可以按照制造这个汽车的方式去制造其他的汽车。(这个制造过程就类似于 继承)
但是,由于汽车行业的竞争激烈,我们不能仅仅局限于制造小轿车,我们要制造SUV,MPV等更多的车型。但是这些车型都是汽车。(这个多元化汽车产品的过程 可以看作是 多态)
那么我们可以按照上述的比喻来看看 面向过程和面相对象的生产方案。
面向过程
- 安装发动机和变速箱:如何正确安装好发动机和变速箱。
- 安装轮胎:如何从安装好的发动机和变速箱的底盘之上在安装轮胎。
- 组装外观以及内饰: 如何从安装好发动机变速箱轮胎的底盘之上再组装外观和内饰。
- 喷漆以及贴标: 如何从安装好发动机变速箱轮胎以及组装后的成品之上再去喷漆和贴标。
面向对象
首先我们只有汽车这一个对象。
- 汽车-安装发动机和变速箱
- 汽车-安装轮胎
- 汽车-组装外观以及内饰
- 汽车-喷漆贴标
我们不需要关注每一步生产的过程细节和得到的产物,我们这里只需要关注 最后的汽车是不是正经汽车就可以了(皮一下)。
总结
不知道我这种描述大家是否能理解,如果描述有不对的地方欢迎指正,共同进步。
网友评论