8.1.3 类和对象的关系
对象需要从属性和行为两个方面进行描述,类是对象的封装。类的使用主要有以下几个步骤。
❑定义一个类,C++中分别用数据成员和函数成员来表现对象的属性和行为。类的定义强调“信息隐藏”,将实现细节和不允许外部随意访问的部分屏蔽起来。因此,在类定义中,需要用public或private将类成员区分开(此外,还有protected型的数据成员,稍后详细介绍),外界不能访问程序的private成员,只能访问public数据成员,对象间的信息传送也只能通过public成员函数,从而保证对象的数据安全。
❑类的实现,即进一步定义类的成员函数,使各个成员函数相互配合以实现接口对外提供的功能,类的定义和实现是由类设计者完成的。
❑通过该类声明一个属于该类的变量(即对象),并调用其接口(即public型的数据成员或函数成员),这是使用者的工作。
由此可以看出,类的设计者和使用者可能并非同一个人,换言之,在解决某一问题时,既可以自己定义并实现某个类,也可以使用别人定义和已经实现了的类。使用者在乎的只是该类提供了什么接口,能完成什么样的功能,而对类内的细节并不关心。这大大促进了代码的复用,先前设计好的类,可以不用修改或只做少量修改便可移植到新的程序中。
这很好理解,举个例子,对“电视机”类来说,类的定义相当于设计师决定电视机的属性,画出“蓝图”或者说“模型”,指明电视机应提供什么功能,例如是否可接数字信号等,而类的实现相当于电子工程师根据“蓝图”设计板卡,使电视能实现“蓝图”中提供的功能,这样,刚开始提出的“蓝图”就进化丰富成了可用于生产的“技术图纸(电路图)”,通过“电路图”便可生产电视。声明一个对象的过程相当于某个电视机的生产过程,生产完毕后,用户便可以使用电视机,调用其提供的接口实现特定的功能。对用户来讲,不关心电视机的内部工作原理,只关心其功能。
注意
类并不是对象,却相当于“图纸”,必须对类进行实例化,生成对象,才能调用对象的接口,实现想要的功能。