5.3.4 实例成员与类成员

5.3.4 实例成员与类成员

1.实例成员变量与类成员变量

类有两种不同类型的成员变量:实例成员变量与类成员变量。类成员变量也称为静态成员变量。

1)实例成员变量

定义中没用关键字static修饰的成员变量就是实例成员变量,不同对象的实例成员变量的值不相同。

例5-1中类Time的成员变量定义语句:

img166

就定义了三个private类型的实例成员变量hour、minute和second。若有如下定义:

img167

则对象t1和t2的实例成员变量数值就不同。t1.hour的值为7,而t2.hour的值为9。

2)类成员变量

用关键字static修饰的成员变量就是类成员变量。系统运行时,只为该类的第一个对象分配内存单元,其后所有新创建的对象都共享该类的这一类成员变量。类成员变量可以用来保存和类相关的信息,或用来在一个类的对象间交流信息。

2.实例方法与类方法

类有两种不同类型的方法:实例方法与类成员方法。类成员方法也称为静态方法。

1)实例方法

没用关键字static修饰的方法称为实例方法。实例方法体中既可以访问类变量,也可以访问实例变量。实例方法只能通过对象来调用。

2)类方法

用关键字static修饰的方法称为类方法或静态方法。类方法体中只能访问类变量,而且类方法既可以通过对象来调用,也可以通过类名来调用。

【例5-7】实例成员与类成员举例。

img168

img169

程序运行结果为:

img170

【程序说明】Date类中的变量year、month、day都是实例成员,对于不同的对象da和db各有自己的值,而count是类成员,两个对象共用一个count。display_count()是类方法,display()是实例方法。本例中实例成员与类成员所占用的内存单元如图5-2所示。

img171

图5-2 实例成员与类成员