1.2.1 类与对象
在前面的描述中,一个类的所有数据成员以及成员函数是一个被封装的整体。从使用的角度看,类只是一个抽象的概念,只有生成具体的对象才有意义。当需要访问对象的数据成员时,通常只能通过类提供的公有成员函数来进行,即通过这个封装体对外公开的接口(Interface),间接地操作数据成员,而不能直接操作被封装的数据成员。这就是面向对象程序设计的封装性,这种特性增强了代码的安全性。
对象是类的一个具体的个体,也称为类的一个实例。而类则是对具有相同属性和操作的一组对象的抽象,为属于该类的全部对象提供了统一的抽象描述。例如,学生是一个类,赵焱、刘佳则是学生类的两个对象。
在面向对象的程序设计方法中,类实质上就是一种类型,这种类型与一般类型不同:类包括数据成员和成员函数,体现的是在面向对象的程序设计中以数据为中心,将数据与对数据的操作捆绑在一起的思想。
与类是一种类型相对应,对象实际上属于类类型的一个变量,这种变量与一般变量不同:对象由一组具体的属性(即数据成员)的值来标识,可以执行类所定义的行为(即成员函数),数据成员是描述对象的静态特性的数据项,成员函数是描述对象动态特性的操作。
由此可见,每个对象都具有以下特征。
(1)对象必须属于某一个类,必须有一个区别于同类型其他对象的对象名。
(2)对象可以有自己的属性值,即每个对象的数据成员由特定的值来标识该对象的静态特性。
(3)对象还可以有一组由类规定的操作,每一个操作决定对象的一种动态行为,通过“对象名.成员函数名(实际参数表)”的形式实施这种行为,同类对象的行为是一致的。
由于对象属于类,对象可以有什么样的数据成员来表达其静态特性,可以执行怎样的成员函数以实现其动态特性,实际上都取决于类的设计,因此在面向对象的程序设计中,最富挑战性和创造性的工作就是类的设计。同时,面向对象编程也是以类的设计为基础的,只有设计好了类,才能通过类的对象展现面向对象程序设计的魅力。