本文共 1479 字,大约阅读时间需要 4 分钟。
我们都知道 Java 是一种面向对象的编程语言,俗称 OOP。
但面向对象这个词汇听起来就很抽象,感觉难以搞懂,所以我试着描述一下我所理解的面向对象。
首先,面向对象是一种编程思想,但他也不是凭空出现的,在没有面向对象之前,人们普遍的使用一种 叫做 面向过程的思想 解决问题。
举个例子,如你今天想吃泡面
你需要自己动手,烧热水、拆盖子、加调料、倒热水、盖盖子,然后就可以等着吃了
一步一步的来,这就是面向过程的思想对于面向对象而言,你只需要 点一份外卖就可以了,结果是一样的
而你不用在意 制作的过程。把店家看成一个对象,他提供了一个方法叫做 泡面,里面封装了一系列制作的过程
所以:面向对象是基于面向过程的。
那这样做的好处又是什么呢?
假设你刚下了单,突然又后悔了,想着都点外卖了,还吃啥泡面啊,于是把订单取消了,点了份黄焖鸡,美美的吃了一顿。 面向过程呢,你这边刚烧了水,再想换别的,水不是白烧了,当然你可以说,用来做一道 水煮鱼也不错,不过鱼做到一半又不想吃了,那是不是代价有点高了呢。 使用面向对象的话就不会出现这样的问题,因为 你不用自己去动手做了,麻烦的事不在你这里,你只需要 知道自己要吃什么,想点什么,然后就会有什么。 同时菜单的可选性大大提高,用在程序中叫做,降低了 耦合性(省事了你的事),提高了可扩展性(可选菜单)。优点:程序执行效率高,因为资源消耗比面向对象低(可以看成省钱)。
缺点:耦合度高、不易扩展、不易维护。优点:耦合性低、易扩展、容易维护。
缺点:程序性能较面向过程较低(可以看成花的钱多)先前聊过了,什么是面向对象,介绍一下面向对象中的三大重点
还拿店家做比喻,对于我们来说,店家就是封装了做饭的过程,只对我们开放菜单,使得我们只需要使用 自己需要的功能,不必关心店家的怎么做的,保护了店家的商业秘密。
用官话叫做:便于使用,且提高了安全性。像泡面,可以继承自 面食,面食里可以规定 共性的属性,像 重量、面粉、热量、颜色、食用方式等等
泡面继承了面食,重写了 食用方式,为 泡,而拌面如果继承面食的话,食用方式就成了 拌。 放在程序里叫做,提高了代码复用性,简化开发。多态的前提是 继承
今天你想吃面,但还不确定吃泡面还是拌面,就可以先声明一个 面食,然后可以想好了再指向具体的种类。单一职责原则:店家卖泡面就泡面不能泡面里带拌面捆绑消费,单独类做到功能单一。
开放封闭原则:像给泡面加个蛋可以,但你不能把基础的面拿走,对于添加是欢迎的,对于删改是拒绝的。 里式替换原则:就是多态 泡面和拌面都可以叫做面食,给像吃面的人吃。 依赖倒置原则:高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。就是你出国要说你是中国人,而不能说你是哪个村子的。比如说中国人是抽象的,下面有具体的xx省,xx市,xx县。你要依赖的抽象是中国人,而不是你是xx村的。 接口分离原则:设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好。就比如一个手机拥有打电话,看视频,玩游戏等功能,把这几个功能拆分成不同的接口,比在一个接口里要好的多。抽象会使复杂的问题更加简单化。
从以前面向过程的自己做饭,变成了张张嘴的指挥者。 面向对象更符合人类的思维,面向过程则是机器的思想转自:
转载地址:http://plzpi.baihongyu.com/