Java中成员变量和属性之间的关系

转载 2016年08月30日 14:42:58


有人可能遇到这样的错误,明明在类中定义了某个成员变量,但是系统在运行的时候提示错误:属性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中成员变量和属性之间的关系

有人可能遇到这样的错误,明明在类中定义了某个成员变量,但是系统在运行的时候提示错误:属性XX没有定义。这是什么原因呢?大家知道成员变量有多种访问控制符,通常都应该把成员变量定义成私有的,然后为该成员变...
  • JavaEETeacher
  • JavaEETeacher
  • 2009年07月01日 08:20
  • 9674

Java中字段、属性、成员变量、局部变量、实例变量、静态变量、类变量、常量

首先看个例子:package zm.demo;public class Demo { private int Id;//成员变量(字段)、实例变量(表示该Id变量既属于成员变量又属于实例变量)...
  • zm13007310400
  • zm13007310400
  • 2017年08月23日 22:50
  • 479

解惑——iOS中成员变量和属性区别

一篇文章告诉你到底怎么区别iOS成员变量和属性的前世今生
  • u012946824
  • u012946824
  • 2016年06月30日 10:56
  • 6270

Java中字段、域与成员变量关系

Java中Field译为”字段“,也译为”域“,Field和成员变量(Member Variable)是相同的。成员变量包括:类变量(也叫静态变量) 和实例变量。静态变量前面有static关键字修饰,...
  • u013632190
  • u013632190
  • 2016年02月14日 12:43
  • 526

java基础(八)Math/代码块/继承成员方法指南的关系/继承中成员变量之间的关系/方法的重写/继承中构造方法之间的关系/this和super的区别

Math类:包含基础的数学运算,该类没有构造方法,该类下都是静态的,类直接调用; 获取随机数: 代码块: 局部代码块------方法内的代码块; 构造代码块------...
  • u011146511
  • u011146511
  • 2016年06月26日 23:52
  • 166

Java类与类之间的5种关系及uml表示

一、继承关系      继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识,在设计时一...
  • pj36536
  • pj36536
  • 2016年11月09日 16:49
  • 5749

Java系列-类与类之间的六种关系

类与类之间的关系 一、继承关系      继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extend...
  • Dream_angel_Z
  • Dream_angel_Z
  • 2015年03月28日 21:47
  • 1460

java中静态变量和成员变量的区别

所属不同: 静态变量属于类,所以也称为为类变量;成员变量属于对象,所以也称为实例变量(对象变量) 在内存中位置不同: 静态变量存储于方法区里的静态区;成员变量存储于堆内存区 在内存中出现的时间不同...
  • qq_31598113
  • qq_31598113
  • 2016年12月26日 13:59
  • 1097

OC 成员变量和属性的区别 .

转自:http://blog.sina.com.cn/s/blog_727bd1560101llwj.html 比如下面这个程序,aboutList,和 otherList 到底有什么不同, ...
  • huang2009303513
  • huang2009303513
  • 2014年08月08日 21:38
  • 20375

成员变量、实例变量、属性变量的联系

@interface MyViewController :UIViewControlle { UIButton *yourButton; int count; id data; } @pr...
  • www9500net_
  • www9500net_
  • 2016年03月23日 22:43
  • 1210
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java中成员变量和属性之间的关系
举报原因:
原因补充:

(最多只允许输入30个字)