访问JavaBean的属性
在讲解面向对象时,经常会使用类的属性,类的属性指的是类的成员变量。在JavaBean中同样也有属性,但是它和成员变量不是一个概念,它是以方法定义的形式出现的,这些方法必须遵循一定的命名规范,例如在JavaBean中包含一个String类型的属性name,那么在JavaBean中必须至少包含getName()和setName方法中的一个,这两个方法的声明如下所示:
public String getName();
public void setName(String name);
关于上述两个方法的相关讲解具体如下:
● getName()方法:称为getter方法或者属性访问器,该方法以小写的get 前缀开始,后跟属性名,属性名的第一个字母要大写,例如,nickName属性的getter方法为getNickName()。
● setName()方法:称为settter方法或者属性修改器,该方法必须以小写的set 前缀开始,后跟属性名,属性名的第一个字母要大写,例如,nickName属性的setter方法为setNickName()
如果一个属性只有getter方法,则该属性为只读属性,如果一个属性只有setter方法,则该属性为只写属性,如果一个属性既有getter方法,又有setter方法,则该属性为读写属性。通常来说,在开发JavaBean时,其属性都定义为读写属性。
需要注意的是,对于JavaBean属性的命名方式有一个例外情况,如果属性的类型为boolean,它的命名方式应该使用is/get而不是set/get。例如有一个boolean类型的属性married,该属性所对应的方法如下所示:
public boolean isMarried();
public void setMarried(boolean married);
从上面的代码可以看出,married属性的setter方法命名方式没有变化,而getter方法变成了isMarried。当然,如果一定要写成getMarried()也是可以的,只不过isMarried更符合命名规范。
通过上面的学习,大家对JavaBean组件有了一个初步的了解,为了更加深刻地理解JavaBean属性的定义,接下来通过具体的案例来实现一个JavaBean程序。在chapter08工程的cn.itcast.chapter08.javabean包下定义一个类Student,如例1所示。
例1 Student .java
1 package cn.itcast.chapter08.javabean;
2 public class Student {
3 private String sid;
4 private String name;
5 private int age;
6 private boolean married;
7 //age属性的getter和setter方法
8 public int getAge() {
9 return age;
10 }
11 public void setAge(int age) {
12 this.age = age;
13 }
14 //married属性的getter和setter方法
15 public boolean isMarried() {
16 return married;
17 }
18 public void setMarried(boolean married) {
19 this.married = married;
20 }
21 //sid属性的getter方法
22 public String getSid() {
23 return sid;
24 }
25 //name属性的setter方法
26 public void setName(String name) {
27 this.name = name;
28 }
29 public void getInfo() {
30 System.out.print("我是一个学生");
31 }
32 }
在例1中定义了一个Student类,该类拥有5个属性,分别为age、married、name、sid和info,其中age和married属性是可读写属性,name是只写属性,sid是只读属性,它们在类中都有命名相同的成员变量,而info属性是只读属性,但它没有命名相同的成员变量。