一、面向过程编程

  
过程化编程是什么?这种编程手法注重过程,注重函数的调用,注重时间的动作,并没有高层的抽象。

此编程在设计时,分析解决问题所需要的步骤,然后用函数一步步实现,再依次调用就行了。

举个例子,你要从冰箱中拿出一个冰激淋,打开电视,坐在沙发上好好的享受你的周末。那么这个过程分成四步。

打开冰箱-------->拿出冰激淋------->打开电视------->坐在沙发上

二、面向对象编程

 
大名鼎鼎的面向对象编程,此编程与过程化编程最大的区别在于此编程不注重过程,注重功能与函数之间的关系,这种编程常常会将高层抽象化。

此编程在设计时,分析解决问题所需要的功能,用同一个类实现同一个功能,类是描述某种功能(动作),对象是类的实例化,类是广义的,对象是具体的。

举个例子,还是之前得到冰箱的例子,但是在面向对象的编程中。

打开冰激淋和打开电视剧都涉及到了一个动作“打开”,我们给这个打开动作定义一个类“打开”,里面存放着一个方法用于打开当前事物“打开事物”。

冰箱和电视剧,让我们来想想它们之间存在着哪种联系?聪明的你一定能想出来的,噢,对!它们都是电器,于是在此例中我们就可以定义一个类“电器”,而冰箱和电视则是类的实例---对象。那么问题来了,我们该如何在这个类“电器”用上另一个类“打开”的方法呢?

1、继承

我们可以让“电器”类继承“打开”类,这样子类就有父类的方法“打开事物”了-------------这就是面向对象中的四大特性之一:继承。继承描述的是类与类之间的关系,通过继承可以在无需改变父类的情况下,对父类的功能进行扩展和重写。在子类中只需要将自己特有的属性和方法写出来,其余的会在父类中得到。

1.1  扩展

关于扩展,在此例中体现得不够明白,我再举一个简单的例子,我们定义一个类是“冰激淋”,此类中有有冰激淋特有的属性和方法,例如会融化等等。接着我们再定义一个类“巧克力冰激淋”,这个类继承“冰激淋”类,于是在这个类里除了冰激淋特有的属性和方法之外,又多了一个属性:巧克力味。这就是扩展。

1.2  重写

在此例中,我们需要打开冰箱也需要打开电视,但冰箱与电视不同的是,打开冰箱之后我们仍需要关闭冰箱,打开电视之后我们暂时不需要关闭电视,于是我们在冰箱类中对“打开事物”这一方法进行重写,添加上“关闭事物这一个行为”。----------这就是重写,子类对父类的方法进行重写。

2、封装

同样是冰箱的例子,我们在冰箱中存放了一个冰激淋,从我家门前走过一个路人,它能狗进到我家里打开我的冰箱取走我的冰激淋吗?很明显不能,为什么?因为这个冰激淋被我放在冰箱里,这是我家的,你一个路人不能够随意的取走别人的东西-------------这就是封装,在定义一个类时,将类中的属性私有化(在Java中使用'private"关键词修饰),此属性只能在此类中访问。一般而言要获取、设置封装类的属性需要通过封装类中的"get()"和"set()"。

3、多态

多态是指在程序中允许出现重名现象,它指的是在一个类中定义的属性和方法被其他类继承以后,它们可以具有不同的数据类型或表现出不同的行为,这使得同一个属性和方法在不同类中具有不同的语义。举个例子,当听到"cut"时,理发师的行为是剪发,演员的行为是停止表演。

由此可以推出多态存在的三个条件

继承关系,只有存在了继承,才会出现,不同类对相同属性做出的不同反应
重写父类的方法,如之前的冰箱重写父类“打开”的方法“打开事物”
父类引用指向子类对象
 

4、抽象

抽象就像我们之前对冰箱和电视的分类一样,我们将它们看成是一个电器类的实例,那么这个过程就是抽象,什么意思呢?就是描述事物的特征,不用管其他细节。

数据抽象------->表示世界中某一类事物的特征,就是对象的属性,比如鸟有羽毛,有翅膀等
过程抽象------->表示世界中某一类事物的行为,就是对象的方法,比如鸟会飞,会叫等。
 
那么经过这么多的了解我们可以准确的用面向对象编程,描述上面冰箱的例子。

冰箱.打开事物(重写过)-------->拿出冰激淋------->电视机.打开事物---------->坐在沙发上

事实上,我们相比较与“面向过程编程”我们只需要定义一次打开行为即可,甚至只需要定义一个电器类就可通过实例化表述“冰箱”和“电视”。那么再简化一下。

电器类实例.打开事物(重写过)-------->拿出冰激淋------->电器类实例.打开事物-------->坐在沙发上。

如此一来便可一简化代码,使代码结构更加清晰,也更容易使用。像是此例中,如果我们换个目标,我们需要从微波炉中拿出加热好的事物,打开空调,坐在沙发上。

那么,在面向过程中的编程中,我们会将之前的代码全部抛弃重新构建函数。

打开微波炉------->拿出食物------->打开空调------->坐在沙发上

那么,如果是面向对象编程的话,就会是。

电器实例.打开事物(重写过)------->拿出食物------->电器实例.打开事物------->坐在沙发上

三、参考

本文参考自互联网。