今天开始根据Java Guide开始补充学习Java,因此有Java Guide标签的文章内容大多引用自Java Guide

众所周知,Java是一种面向对象的语言,关于面向过程、面向对象的基本概念等已经是老生常谈的话题了。

什么叫做面向过程

面向过程编程,英文名是Procedural、Procedure-oriented或者Function-oriented programming,主要是指那些使用顺序、条件、循环这种结构来写的程序,它们解决问题的方法是按照一定顺序的、按照过程一步一步地的去解决。

例如:把衣服脱下来 -> 找一个盆 -> 放点洗衣粉 -> 加点水 -> 浸泡10分钟 -> 揉一揉 -> 清洗衣服 -> 拧干 -> 晾起来。这个程序强调的是步骤。

什么叫做面向对象

面向对象编程(Object-Oriented Programming)是划时代的编程思想变革,推动了高级语言的快速发展和工业化进程。OOP的抽象、封装、继承、多态的理念使软件大规模化成为可能,有效地降低了软件开发成本、维护成本和复用成本注1

面向对象:把衣服脱下来 -> 打开全自动洗衣机 -> 扔衣服 -> 按钮 -> 晾起来

面向对象:强调对象,这里的对象就是洗衣机。

面向对象思想是一种更符合我们思考习惯的思想,它可以将复杂的事情简单化,并将我们从执行者变成了指挥者。

面向过程和面向对象的优缺点

面向过程面向过程性能比面向对象高。 因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发。但是,面向过程没有面向对象易维护、易复用、易扩展。

面向对象面向对象易维护、易复用、易扩展。 因为面向对象有封装、继承、多态性的特性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。但是,面向对象性能比面向过程低。

这个并不是根本原因,面向过程也需要分配内存,计算内存偏移量,Java性能差的主要原因并不是因为它是面向对象语言,而是Java是半编译语言,最终的执行代码并不是可以直接被CPU执行的二进制机械码。
而面向过程语言大多都是直接编译成机械码在电脑上执行,并且其它一些面向过程的脚本语言性能也并不一定比Java好。