对于编程语言,大学基本都是从c语言学起,而c语言是面向过程的语言,逐渐上了大二或者自学接触到了c++或者java,知道这类编程语言是面向对象的,那这两者应该怎么理解呢?在面试中经常会遇到过,有一次面腾讯的实习,被面试官问到,当时答的支支吾吾,在博客上找了几篇觉得不是太了解,于是自己写一下,不知道对错,就当做自己的笔记吧,希望大神指正。
问:谈谈你对面向过程和面向对象的理解
①首先知道面向对象主要有三大特性:继承,封装,多态。继承和封装比较重要,继承就是继承父类的属性和方法,这样子就不用自己再去创建,封装就是把自己的一些属性和方法包装起来,这样起到了安全的作用。
②顾名思义,由书面意思可以看出面向对象就是只关注对象本身和结果,面向过程就是注重是怎么实现这个过程。举一个例子:现在面试官您与我在谈话,如果以面向过程的思想分析,就是您问一句,我答一句,比如自我介绍,绩点,竞赛经历,实习经历等等,我就要一个一个回答您,重点就放在这些过程上面,如果是用面向对象的过程理解,就是可以new两个对象出来,一个是我,一个是面试官,然后在各自的对象里封装了提问(回答)这些绩点的方法,竞赛经历的方法,实习经历的方法,然后取各自所需调出来就可以。这样做的好处是万一在中途中还要加上问我其他情况,如果是面向过程,就需要从头到尾再来一次,强调了过程。(在这里好像不是很恰当。。。)如果是面向对象,那只要把遗漏的信息封装成方法并且放在对象里,那我直接调用就可以了,强调的是对象。
③从上面例子可以看出
面向过程:
优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展
面向对象
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
缺点:性能比面向过程低
目前还是小渣渣,只是个人愚见,因为这样我比较容易理解一点。 大神不喜勿喷哈。在此谢过啦