有人可能遇到這樣的錯誤,明明在類中定義了某個成員變數,但是系統在執行的時候提示錯誤:屬性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沒有定義。這是什麼原因呢?大家知道成員變數有多種訪問控制符,通常都應該把成員變數定義成私有的,然後為該成員變數提供set方法和get方法,外界通過set方法和get方法對成員變數進行操作。這樣對外界來說,只有...
成員變數 例項變數 屬性之間的關係
首先來區別一下 例項變數 成員變數 的區別 可以看到在介面 inte ce 括號裡面的統稱為 成員變數 例項變數是成員變數中的一種!例項變數的英文翻譯是 instance variable object specificstorage 例項的英文翻譯為 instance manifestation ...
成員變數和屬性
成員變數的作用域 inte ce person nsobject 屬性生成器 屬性生成器 property 1.自動的生成 getter和setter方法的 宣告 2.需要知道 引數型別和屬性名稱 3.是編譯器的特性 synthesize 生成getter 和 setter方法,最為簡單的實現 sy...