2014-10-29 46 views
0

假設你創建了一個名爲Album的類和一個名爲Song的類。您希望Album對象能夠使用歌曲對象中存儲的字段(例如歌曲的文件大小或運行時)。你需要做些什麼才能讓它發生?如何讓對象使用存儲在另一個對象中的字段?

我試過改變我的領域內的歌曲公衆而不是私人,但沒有奏效。說實話,我是OOP的新手,我想我在這裏忽略了一些非常重要的東西。

+0

您可以發佈您'Album'和'Song'類?向您展示實際代碼的情況會更容易一些。 – matt 2014-10-29 13:17:11

+2

在這種情況下,繼承可以像你想要的那樣工作。 – Frunk 2014-10-29 13:17:32

+1

@Frunk如果您對此有所瞭解,這將有所幫助。很明顯,我們不希望歌曲繼承自專輯(因爲歌曲不是專輯類型),所以你在這裏意味着什麼? – 2014-10-29 13:26:32

回答

1

領域必須是私人 這就是爲什麼你可以創建存取 getter和setter

見例如:

Adding Setter and Getter Methods 

爲了使託管bean的國家訪問,你需要添加二傳手以及該狀態的getter方法。 一旦添加了setter和getter方法,bean就完成了。最終的代碼如下所示:

public class Printer { 


    private String name; 


    public void setName(String name) { 
     this.name = name; 
    } 

    public String getName() { 
     return name; 
    } 
} 
0

方式三:

  1. 讓有問題的公共領域。不推薦,因爲它違反封裝
  2. 在Song中提供「getter」方法以返回有問題的值。通常的答案,有時也是正確的答案
  3. 在Song中提供一種方法來返回表示您想要的信息的String。如果有一個宋應該負責代表的信息複雜的情況下很有用。

一般來說,我更喜歡讓物體儘可能地「傾向於自己編織」。爲此,如果有意義的話,我總是會嘗試處理擁有它的類中的數據。在這種情況下,它是有道理的相冊將樂曲數據組合成一些像樣的形式,所以我建議用干將在歌曲類,以提供訪問,例如:

public int getFileSize(){ 
    return fileSize; 
} 

public String getName(){ 
    return name; 
} 

然後專輯可以把這些一起然而,它喜歡。

0

首先,一個專輯將包含一個歌曲列表。

例如:

public class Album 
{ 
    private List <Song> songs; 

    public Album() 
    { 
     songs = new ArrayList <Song>(); 
    } 
} 

宋將具有公共方法如getName()getLength(),這將允許一個Album對象來訪問它們。

例如:

public int totalLength() 
{ 
    int length = 0; 
    for (Song song : songs) 
     length += song.getLength(); 
    return length; 
} 
相關問題