5.1.2 类体
类由成员变量和成员方法组成,因此,类体的定义要包括类的具体内容,包括类的属性与方法。由于Java语言中的所有方法必定属于某个类,即方法一定是成员方法,所以成员方法可简称为方法。
下面我们结合设置时间这个简单的例子,分别介绍类成员变量和类方法的设计。
【例5-1】设计一个时间类。要求包括设置时间的方法。
1.声明成员变量
声明一个成员变量就是声明该成员变量的名字及其所属的数据类型,同时指定其他一些附加特性。声明成员变量的格式为:
[说明]
1)<修饰符>有private,public和protectected三种,分别表示变量是私有、保护和公共的。默认(即没有修饰符时)访问权限表示该成员变量只能被该类本身和同一个包的类访问。
2)static指明该成员变量是一个类成员变量,final指明该成员变量是常量,transient指明该成员变量是临时变量,transient很少使用。类成员变量是一个类的所有对象共同拥有的成员变量。
在上例中,成员变量hour、minute、second都是int类型的private成员变量,即这三个成员变量只能被该类本身访问,任何其他类都不能访问这几个成员变量。
2.声明方法
类的方法,又称为成员函数,用来规定类属性上的操作,实现类的内部功能的机制,同时也是类与外界进行交互的重要窗口。
类中定义的方法通常起到两种作用:一是围绕着类的属性进行各种操作;二是与其他的类或对象进行数据交流、消息传递等操作。
声明成员方法的格式为:
1)<修饰符>和成员变量一样,也有private、public和protectected三种,分别表示变量是私有、保护和公共的。另外还有默认。static指明该方法是一个类方法。
2)方法声明中必须给出方法名和方法的返回值类型;关键字void表示没有返回类型。
注意:方法名后的圆括号是必须的,即使参数列表为空,空圆括号也是必需的。
public void setTime(int hh,int mm,int ss)
语句声明了方法名为setTime的public方法,返回值为空,参数有三个,分别为hh,mm、ss,数据类型均为int。
3.方法体
方法体是方法的具体实现。方法体的设计就是前面介绍的变量定义、赋值语句、if语句、for语句等根据方法体设计要求的综合运用。
4.成员变量与局部变量
定义在类中的变量都是成员变量,其作用范围是整个类。即同一类中的所有方法都可以对其进行访问,并可简单地通过名字来引用。
定义在方法中的变量,称为局部变量(local variable),只能在该方法中使用。局部变量属于程序模块范围(block scope)。若方法中的局部变量名称与类中的实体变量相同,那么实体变量就隐藏起来。若要使用被隐藏起来的实体变量,可通过this对象取得。比如实体变量为var,可通过this.var取得它。
成员变量和局部变量的类型既可以是基本数据类型,也可以是已定义的类类型。