Java中成员变量和属性之间的关系
2012-02-17 17:54
357 查看
/article/1693704.html
有人可能遇到这样的错误,明明在类中定义了某个成员变量,但是系统在运行的时候提示错误:属性XX没有定义。这是什么原因呢?
大家知道成员变量有多种访问控制符,通常都应该把成员变量定义成私有的,然后为该成员变量提供set方法和get方法,外界通过set方法和get方法对成员变量进行操作。这样对外界来说,只有能够访问到的成员变量才算是属性,例如下面的代码:
private String userName;
public void setUserName(String userName){
this.userName = userName;
}
public String getUserName(){
return userName;
}
这时候我们说当前类有userName属性,注意要区分大小写。
另外还有一点非常重要,属性的名字不是由成员变量决定的。通常set方法和get方法的名字是set或者get加上成员变量的名字,成员变量的首字母要变成大写。而属性的名字是什么了,其实属性的名字就是去掉set或者get,然后把首字母变成小写。从这两个命名规则可以看出,通常属性名与成员变量的名字是一致的。但是,如果在写set方法和get方法的时候,没有按照默认的规则写,则属性名字和成员变量名字就一样了。看下面的例子:
private String userName;
public void setUsername(String userName){
this.userName = userName;
}
public String getUsername(){
return userName;
}
在上面的代码中,只修改了方法的名字(大写的N变成小写的n),这时候属性的名字已经由userName变成username了。如果要按照属性名字访问而不是直接访问get方法(例如,表达式语言),或者由框架自动完成属性的赋值(例如,对于WebWork,需要在Action中需要定义与表单元素相同名字的属性,对于Struts1,需要在ActionForm中定义与表单元素相同名字的属性),这时候就必须写username而不是userName,否则就抱错,就是本文开头所说的错误。
如果出现这样的错误,首先查看有没有定义set方法或者get方法,然后看看方法名字是否写的正确。
有人可能遇到这样的错误,明明在类中定义了某个成员变量,但是系统在运行的时候提示错误:属性XX没有定义。这是什么原因呢?
大家知道成员变量有多种访问控制符,通常都应该把成员变量定义成私有的,然后为该成员变量提供set方法和get方法,外界通过set方法和get方法对成员变量进行操作。这样对外界来说,只有能够访问到的成员变量才算是属性,例如下面的代码:
private String userName;
public void setUserName(String userName){
this.userName = userName;
}
public String getUserName(){
return userName;
}
这时候我们说当前类有userName属性,注意要区分大小写。
另外还有一点非常重要,属性的名字不是由成员变量决定的。通常set方法和get方法的名字是set或者get加上成员变量的名字,成员变量的首字母要变成大写。而属性的名字是什么了,其实属性的名字就是去掉set或者get,然后把首字母变成小写。从这两个命名规则可以看出,通常属性名与成员变量的名字是一致的。但是,如果在写set方法和get方法的时候,没有按照默认的规则写,则属性名字和成员变量名字就一样了。看下面的例子:
private String userName;
public void setUsername(String userName){
this.userName = userName;
}
public String getUsername(){
return userName;
}
在上面的代码中,只修改了方法的名字(大写的N变成小写的n),这时候属性的名字已经由userName变成username了。如果要按照属性名字访问而不是直接访问get方法(例如,表达式语言),或者由框架自动完成属性的赋值(例如,对于WebWork,需要在Action中需要定义与表单元素相同名字的属性,对于Struts1,需要在ActionForm中定义与表单元素相同名字的属性),这时候就必须写username而不是userName,否则就抱错,就是本文开头所说的错误。
如果出现这样的错误,首先查看有没有定义set方法或者get方法,然后看看方法名字是否写的正确。
相关文章推荐
- Java中成员变量和属性之间的关系
- Java中成员变量和属性之间的关系
- 成员变量、实例变量、属性之间的关系
- java基础(八)Math/代码块/继承成员方法指南的关系/继承中成员变量之间的关系/方法的重写/继承中构造方法之间的关系/this和super的区别
- 成员变量、实例变量、属性之间的关系
- java继承关系中成员变量,构造方法,成员方法的关系
- JAVA开发人员学习C++之变量名和变量地址之间是什么关系
- 属性和成员变量(实例变量)的关系
- Java中构造代码块和成员变量初始化的顺序关系
- Java学习笔记45:Java 线程与主线程之间的变量关系
- 默认构造与特殊的成员变量之间的关系
- Java父、子类成员变量和方法的调用关系
- Java中包名、类名、方法名、成员变量名、属性名 大小写问题
- 实例变量和成员属性之间的区别
- java中静态成员与非静态成员之间的访问关系
- Java中字段、域与成员变量关系
- java-成员变量的属性与成员函数的覆盖
- C#属性、字段和成员变量的关系区别
- 超级简单的例子说明JAVA PACKET CLASS 和变量之间的关系
- Java中构造代码块和成员变量初始化的顺序关系2之 Cannot reference a field before it is defined