更新時間:2023-01-10 來源:黑馬程序員 瀏覽量:
為了規(guī)范JavaBean的開發(fā),Sun公司發(fā)布了JavaBean的編寫規(guī)范,具體如下。
·JavaBean必須具有一個公共的、無參的構(gòu)造方法,這個方法可以是編譯器自動產(chǎn)生的默認(rèn)構(gòu)造方法。
·JavaBean提供公共的getter和setter方法,以方便對屬性進行讀/寫操作。
為了讓讀者對JavaBean有一個直觀的認(rèn)識,下面講解一個簡單的封裝數(shù)據(jù)的JavaBean,如文件11-10所示。
文件11-10 Book.java
package com.itheima.javabean; public class Book { private double price; public double getPrice() { return price; } public void setPrice(double price) { this.price=price; } }
在文件11-10中,定義了一個Book類,該類就是一個JavaBean,它沒有定義構(gòu)造方法,Java編譯器在編譯時,會自動為這個類提供一個默認(rèn)的構(gòu)造方法。Book類中定義了一個price屬性,并提供了公共的getPrice()和setPrice()方法供外界訪問屬性。
在講解面向?qū)ο髸r,經(jīng)常會使用類的屬性,類的屬性指類的成員變量。在JavaBean中同樣也有屬性,但是它和成員變量不是一個概念,它是以方法定義的形式出現(xiàn)的,這些方法必須遵循一定的命名規(guī)范,例如,如果在JavaBean中包含一個String類型的屬性name,那么在JavaBean中必須包含getName()和setName()方法中的一個,這兩個方法的聲明如下所示:
public String getName() {...} public void setName(String name) {...}
在上述兩個方法聲明中,方法體內(nèi)的內(nèi)容用“...”表示省略。關(guān)于這兩個方法的相關(guān)講解具體如下。
·getName()方法:稱為getter方法或者屬性訪問器,該方法必須以小寫的get前綴開始,后跟屬性名,屬性名,屬性名的第一個字母必須大寫,例如,nickName屬性的getter方法為getNickName()。
·getName()方法:稱為setter方法或者屬性修改器,該方法必須以小寫的set前綴開始,后跟屬性名,屬性名的第一個字母必須大寫,例如,nickName屬性的setter方法為setNickName()。
如果一個屬性只有g(shù)etter方法,則該屬性為只讀屬性,如果一個屬性只有setter方法,則該屬性為只寫屬性,如果一個屬性既有g(shù)etter方法,又有setter方法,則該屬性為讀/寫屬性。通常來說,在開發(fā)JavaBean時,其屬性都定義為讀/寫屬性。
需要注意的是,對于JavaBean屬性的命名方式有一個特殊情況,如果屬性的類型為boolean,它的命名方式應(yīng)該使用is/set而不是get/set。例如,有一個boolean類型的屬性married,則該屬性所對應(yīng)的方法聲明如下所示:
public boolean isMarried() {...} public void setMarried(boolean married) {...}
從上面的代碼中可以看出,married屬性的setter方法命名方式?jīng)]有變化,而getter方法變成了isMarried()方法,當(dāng)然,寫成getMarried()也是可以的,只不過isMarried()更符合命名規(guī)范。