一、抽象
什么是抽象?将鸽子和麻雀看做是鸟,这是抽象;将整个空调的行为用遥控代替,遥控就可以看做是空调的抽象;将外貌,种族,语言等等形形色色不同的个体看做是人这样一个概念,这也是抽象。
在编程语言中,从最早的机器语言到汇编语言再到高级语言,就是靠一层一层抽象来实现的。比如汇编语言把“遥控器”给了高级语言,这样高级语言就能简便使用一些已经集成在遥控器中的汇编语言指令,通过这些指令,形成更加符合人们编程习惯的语言,比如java。
在面向对象中,抽象更加类似于集合的概念,同一个集合里的元素拥有共同的特征,可以完成同样的行为动作。而且同一个集合中的不同的元素也有各自不同的特点,比如2,3是素数,而4不是。面向对象编程语言将世间万事万物按照各自的特点,抽象成不同的“类”,而“类”对应于现实存在的事物则被称为“对象”。很容易看出来“类”是“对象”的抽象。
二、类与对象
类是具有同样行为和属性的对象的集合,是一个抽象的概念,并不实际存在。类的行为可以看做是提供给外界的接口(只有部分),类的属性是类所具有特定的性质。
对象是类的现实表示,存在于实际生活中。一个类可以生成多个对象,每个对象的属性可以不同,行为必须公有。同时,每个对象可以拥有自己独特的部分,比如鸟中鸵鸟不会飞翔。
三、面向对象与面向过程
都是解决问题的方式。
面向过程是将问题单独提出,一步一步,按照逻辑上的顺序解决。面向对象的编程方法并不拘泥于问题的本质步骤,而是将问题按照功能抽象出来,分解成一个一个类与对象之间的协调工作。以下五子棋为例,面向过程是完整记录每一步的动作,而面向对象则是将五子棋抽象出来为一个五子棋类,一个棋盘类和一个规则类,五子棋所在的位置和颜色是属性,每一次的动作都是五子棋类的一个对象,仅仅是对象位置和颜色不同。使用面向对象的编程方法,可以是编程中的逻辑更加清晰,代码可读性高,也便于管理大型项目,抽象出来的类也可以重复使用。