面向对象编程(Object Oriented Programming,OOP,面向对象程序设计) 的主要思想是把构成问题的各个事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙一个事物在整个解决问题的步骤中的行为。
面向过程就是分析出解决问题所需要的步骤,然后用函数逐步实现,再依次调用就可以了。
面向对象和面向过程是两种不同的编程思想,没有哪一种绝对完美,要根据具体需求拟定开发方案。例如,开发一个小型软件或应用程序,工程量小,短时间内即可完成,完全可以采用面向过程的开发方式,使用面向对象,反而会增加代码量,降低开发效率。
面向过程的编程语言(如C语言)不能创建类和对象,不能用面向对象的思想来开发程序;面向对象的编程语言(如C++、PHP等)保留了面向过程的关键字和语句,仍然可以采用面向过程的思想来开发程序。
面向对象是面向过程的补充和完善。
注意,不要“死磕”概念上的理解,很多有经验的程序员甚至都不能完全解释清楚面向对象和面向过程的区别,要重在实践,不断揣摩编程语言的思想。
为了方便说明,我们将从现实生活中的实例入手。
我们知道,工业上使用的铸件(电饭锅内胆、汽车地盘、发动机机身等)都是由模子铸造出来的,一个模子可以铸造出很多相同的铸件,不用的模子可以铸造出不同的铸件。这里的模子就是我们所说的“类”,铸件就是我们所说的“对象”。
类,是创建对象的模板,一个类可以创建多个相同的对象;对象,是类的实例,是按照类的规则创建的。
由模子铸造出来的铸件(对象),有很多参数(长度、宽度、高度等),能完成不同的操作(煮饭、承重、保护内部零件等)。这里的参数就是对象的“属性”,完成的操作就是对象的“方法”。
属性是一个变量,用来表示一个对象的特征,如颜色、大小、重量等;方法是一个函数,用来表示对象的操作,如奔跑、呼吸、跳跃等。
对象的属性和方法统称为对象的成员。
一个类(子类)可以继承另一个类(父类)的特征,如同儿子继承父亲的DNA、性格和财产。
子类可以继承父类的全部特征,也可以继承一部分,由程序灵活控制。