在学习java初期时候,经常会接触 "java是一种面向对象语言,而不是面向过程的语言" 那什么是面向对象,什么是面向过程呢?
面向对象:
面向对象,顾名思义,是从"对象"出发去思考的,所以叫面向 对象 ,在java中有一句话叫"万物皆对象",那么,为什么万物会皆对象呢?是因为,java语言认为所有事情都能够抽象的,抽象是什么?在小学语文中,那称之为总结,提炼(把想要归类的东西,提取一些共同的属性和方法(其实就是特征,以及行为))
例如:
抽取 人(特征:眼,耳,口,鼻 行为:睡觉,吃饭,刷牙)
对象: 男人 女人
在上面的例子,可以看出,我面向这些对象都有一些共通特征:不管男人,女人都会有眼耳口鼻(天然属性,只要是人都会有),而且都会睡觉,吃饭,刷牙(行为)
那么面向对象有什么好处?为什么会出来这种思维呢?
那要提到面向过程了
面向过程:
还是顾名思义,面对过程,就是从过程出发,去思考问题的.
例如我想要 鲜榨橙汁.面对过程思维去编写程序的话就是---
榨橙汁 [1.先要有橙子 2,把橙子放进去榨汁机,3找杯子 4.用杯子去装橙汁]("注意为什么用[ ]去括起来")
这样一个榨橙汁程序就写好了,不过有个缺点就是,如果当我想榨苹果汁怎么办?榨橙子已经打包成一个不可分割的程序了(这就是为什么用[ ]包裹起来),重新再写一个榨苹果汁呗
榨苹果汁 [1.先要有苹果 2,把苹果放进去榨汁机,3找杯子 4.用杯子去装苹果汁]
这样就显得非常多余重复,因为有些只要有需求变更,程序就要重新写过了,为了解决这种低效率的(提高复用性)事情,采用对象的思维就好很多了
面向对象以及面向过程区别:
面向对象:
这个过程当中,出现的物品有:苹果(橙汁),榨汁机, 两样东西(杯子不做讨论),把他们都抽取对象
1.关于苹果(橙子)
抽象 水果
对象 苹果 橙汁
2.关于榨汁机
抽象 机器[行为:榨汁(水果)]
对象 榨汁机
面想对象的程序中:
1. 找到苹果/橙子
2. 放进榨汁机(苹果/橙子)
3. 榨出相对应的汁(苹果/橙子)
*这样程序的代码量就写少很多了,因为每次我需要用到榨汁机,我直接使用榨汁机,然后把相对应的水果代码放进就好了.
*简单来说 提高复用性
基于对象(用于js语法当中):
基于对象跟面向对象不一样,一个是'面向',一个是'基于'.
怎么去理解"基于"呢? ----:"从这里出发"
基于对象,就是从对象出发, 面向对象,是面向着对象,然后抽取出一个公共部分("类"),所以我个人更认为---万物皆是类.而基于对象的话,就不存在抽取公共部分这说法,所以也不存在'类'这个说法了.
面向对象以及基于对象区别
什么是"从这个对象出发"(基于对象)呢?
用一个建造房子作为比喻来区分面向对象,以及基于对象,
基于对象:
直接给我一个空白的房子了,我在这个房子(基于这个对象)上,加什么东西都可以.怎么改造都可以,它是独一无二的.
面向对象:
当我要一个三居室的房子,我就需要先有一个公共类(建筑物),然后继承公共类的所有行为与属性之后,再去敲定我想要怎么样的三居室,甚至存在一种情况,我的三居室的格局,已经被公共类提前限制了.所以我并不能拥有我的理想三居室.
*他们之间的区别在于,是否存在 '能'继承的特性.所以术语上来说,基于对象不存在多态,以及继承的特性,而是否能继承,上述两个例子给出的自身的优势以及局限.
本人菜鸟coder,如果有表示的不对的地方,各位大神敬请留言指正.
本人会迅速修正以免误人子弟哈