此为小白随笔
初学java时并没有很好理解什么是面向对象什么是面向过程,当时只知道java是面向对象语言,具有封装,继承,多态的特性,知道这些特性的优势,到后来学了一段时间再看概念才理解通透。
面向对象与面向过程思想比较:
面向过程:就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象:是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
面向过程思想思考问题时,我们首先思考“怎么按步骤实现?”并将步骤对应成方法,一步一步,最终完成。 这个适合简单任务,不需要过多协作的情况下。比如 一个学生早起去上课 ,我们可以理解为: 第一步 起床;第二步 洗漱;第三步 吃早饭;第四步 去上课。而如果用面向对象的思想,我们可以创建一个学生类,这个类具有起床,洗漱,吃饭,上课,这些方法。
单纯用这个例子并不能体现出面向对象的优势,当我们要处理的问题变得复杂时,面向对象的优势才体现出来。比如说,我们现在要造一台手机,利用面向过程思想几乎不可能完成;但利用面向对象思想,我们可以创建一个手机类,它包含屏幕,中框主板,后盖这些对象。中框主板可以创建另一个类,它又包含cpu,摄像头,红外,内存芯片,马达等等;然后我们可以找soc厂商做芯片,内存厂商做内存,这样在把这些部件组装起来。 但是,在一个马达生产的流水线上,仍然还是有步骤,要用到面向过程思想。
因此,面向对象可以帮助我们从宏观上把握、从整体上分析整个系统。 但是,具体到实现部分的微观操作(就是一个个方法),仍然需要面向过程的思路去处理。
总结:
面向对象和面向过程都是解决问题的思维方式,都是代码组织的方式。
解决复杂问题:宏观上使用面向对象把握,微观处理上仍然是面向过程。
面向对象的优势:
面向对象具有三大特征:封装性、继承性和多态性,而面向过程没有继承性和多态性,并且面向过程的封装只是封装功能,而面向对象可以封装数据和功能。所以面向对象优势更明显。