3 回答

TA貢獻(xiàn)1752條經(jīng)驗 獲得超4個贊
getters讓我嘗試向您解釋和的概念setters。
您的班級Song有一些private數(shù)據(jù)字段。這意味著它們對外界隱藏?,F(xiàn)在,如果此類之外的任何實體需要使用這些字段,則必須執(zhí)行額外的步驟。此步驟可以是一個getter或一個setter方法。
getter 方法幫助實體從這些字段獲?。ɑ驒z索)值。setter 方法有助于為這些字段設(shè)置(或分配)值。
請記住,getter 和 setter 是從字段獲取/設(shè)置字段,而不是整個類。這就是為什么存在以下問題:
public String getyearReleased() {
return Song;
}
在上面的代碼中,你首先說你想String從getyearReleased()方法中返回 a,但是你看到你實際上返回的是Song,它是一個類。
main()這是一個包含 2 個字段的類的簡單示例,以及如何通過外部類中的方法獲取/設(shè)置它們。
public class Song {
private String songName;
private int yearReleased;
// Getter method for Song Name
public String getSongName() {
System.out.println("Getting the song name.");
return songName;
}
// Getter method for Year of Release
public int getYearReleased() {
System.out.println("Getting the year of release.");
return yearReleased;
}
// Setter method for Song Name
public void setSongName(String mySong) {
System.out.println("Setting the song name.");
this.songName = mySong;
}
// Setter method for Year of Release
public void setYearReleased(int mySongYear) {
System.out.println("Setting the year of release.");
this.yearReleased = mySongYear;
}
}
您應(yīng)該注意,設(shè)置器不會返回任何內(nèi)容,因為它們只是設(shè)置值。但 getter返回與正在檢索的字段相同的數(shù)據(jù)類型。
您可以在該類中調(diào)用 getter 和 setter 方法。該類將包含以下main()方法:
public class SongDemo {
public static void main(String[] args) {
Song demoSong = new Song();
// call the setters
demoSong.setSongName("Summer of 69");
demoSong.setYearReleased(1988);
// call the getters and print the values returned
System.out.println(demoSong.getSongName());
System.out.println(demoSong.getYearReleased());
}
}
您的輸出如下所示:
Setting the song name.
Setting the year of release.
Getting the song name.
Summer of 69
Getting the year of release.
1988
希望能幫助到你。

TA貢獻(xiàn)1859條經(jīng)驗 獲得超6個贊
應(yīng)遵循普遍接受的約定 - 它使閱讀代碼更容易。
所有變量名稱都應(yīng)以小寫字母開頭。例子:
private String Maker;
應(yīng)該
private String maker;
Getters / Setters 應(yīng)該以駝峰式命名,以 get/set 開頭。這使其成為所謂的 POJO(普通舊 java 對象)。許多庫需要 getter/setter 的這種命名才能正常工作。例子:
public String getyearReleased()
應(yīng)該
public int getYearReleased() {
return yearReleased;
}
getter 應(yīng)該只返回與 getter 方法名稱匹配的變量。你的一些吸氣劑正在返回其他東西。不要這樣做。
將分鐘轉(zhuǎn)換為秒。請注意以駝峰式命名該方法的方式。
public long convertMinToSecond(long minutes) {
return minutes * 60;
}

TA貢獻(xiàn)1155條經(jīng)驗 獲得超0個贊
好吧,不要不知所措,從頭開始:
第一個“規(guī)則”:所有變量都應(yīng)該從小 maker而不是開始Maker。喜歡yearReleased。這被稱為駝峰命名法,因為這些單詞看起來像駱駝一樣有“駝峰” - 但你見過駱駝以駝峰開頭嗎?
這引出了第二條“規(guī)則”:類名以大寫字母開頭,如String或Song。
還有第一個錯字:
public string getyearReleased(){ // it should say String not string
return yearReleased;
}
為了絕對連貫,因為你的變量被稱為yearReleased你的方法應(yīng)該尊重變量的書寫并被調(diào)用getYearReleased。
現(xiàn)在,您的代碼中出現(xiàn)了兩次此方法:第一次出現(xiàn)表明return Song;哪個沒有意義。(你想要的是“年份”而不是“歌曲”)。但由于出現(xiàn)了第二次,您可以刪除該次。
所以你有了 的“getter” yearReleased,現(xiàn)在你需要一個“setter”
public void setYearReleased(int yearReleased){
this.yearReleased=yearReleased;
}
看看這和你的構(gòu)造函數(shù)中的一模一樣嗎?您為該方法提供一個名為“yearReleased”的變量,它將將該值分配給“全局變量” this.yearReleased。您已將值設(shè)置為您的對象。
基本上 getter/setter 是這樣的:
private String maker; // your global field / variable / member ... whatever you want to call it
/** the getter */
public String getMaker(){ //fyi because you are taping two words together the second one gets a capital letter.
return this.maker;
}
/** the setter */
public void setMaker(String maker){
this.maker = maker;
}
設(shè)置器也將與
public void setMaker(String theMakerOfThisAwesomeSong){
this.maker = theMakerOfThisAwesomeSong;
}
相同的結(jié)果。
一旦你編寫了所有的 getter 和 setter - 通常這是為所有字段完成的,例如maker, name, length, type, yearReleased- 然后你可以修復(fù)你的構(gòu)造函數(shù):
public Song(String maker, String name, int length, String type, int yearReleased){ // you forgot to include the yearReleased
...
}
最后但并非最不重要的一點是方法convertMinToSec。我想它應(yīng)該length在幾秒鐘內(nèi)轉(zhuǎn)換歌曲的,這基本上就像length*60.
不要問我這種方法的必要性——你就可以這樣做:
public int convertMinToSec(){
return // calculate how many seconds the song lasts
}
就是這樣。很抱歉,如果這篇文章太長了,但我希望它能對你有所幫助。
添加回答
舉報