5.3.4 实例成员与类成员
1.实例成员变量与类成员变量
类有两种不同类型的成员变量:实例成员变量与类成员变量。类成员变量也称为静态成员变量。
1)实例成员变量
定义中没用关键字static修饰的成员变量就是实例成员变量,不同对象的实例成员变量的值不相同。
例5-1中类Time的成员变量定义语句:
就定义了三个private类型的实例成员变量hour、minute和second。若有如下定义:
则对象t1和t2的实例成员变量数值就不同。t1.hour的值为7,而t2.hour的值为9。
2)类成员变量
用关键字static修饰的成员变量就是类成员变量。系统运行时,只为该类的第一个对象分配内存单元,其后所有新创建的对象都共享该类的这一类成员变量。类成员变量可以用来保存和类相关的信息,或用来在一个类的对象间交流信息。
2.实例方法与类方法
类有两种不同类型的方法:实例方法与类成员方法。类成员方法也称为静态方法。
1)实例方法
没用关键字static修饰的方法称为实例方法。实例方法体中既可以访问类变量,也可以访问实例变量。实例方法只能通过对象来调用。
2)类方法
用关键字static修饰的方法称为类方法或静态方法。类方法体中只能访问类变量,而且类方法既可以通过对象来调用,也可以通过类名来调用。
【例5-7】实例成员与类成员举例。
程序运行结果为:
【程序说明】Date类中的变量year、month、day都是实例成员,对于不同的对象da和db各有自己的值,而count是类成员,两个对象共用一个count。display_count()是类方法,display()是实例方法。本例中实例成员与类成员所占用的内存单元如图5-2所示。
图5-2 实例成员与类成员