2013-10-29 125 views
0

所以我搜索了希望找到某種想法或方式去實現它。繼承枚舉值java

我有一個名爲電影的基類,其實例變量爲id,名稱,借出和借入。然後這個電影類由兩個類bluray和dvd派生。基本上長話短說,他們都建在我正在建設的一個圖書館課上。在電影類型中,我想創建一個名爲genre的枚舉變量,它包含可應用於影片的類型。但我不知道我如何去繼承這個枚舉變量到藍光和DVD類。

我已經被告知它可以完成,但如果任何人都可以闡明我如何去做這件事會很棒!

+1

[Java擴展枚舉]可能的重複(http://stackoverflow.com/questions/1414755/java-extend-enum) –

+0

@sᴜʀᴇsʜᴀᴛᴛᴀ:不,她不問如何從枚舉派生。 –

回答

1

在電影類型中,我想創建一個名爲genre的枚舉變量,它包含可應用於影片的類型。但我不知道我如何去繼承這個枚舉變量到藍光和DVD類。

只是使其成爲不是private的電影類型的成員。 (或者只是在電影類型之外的同一個包中的枚舉。)然後,藍光和DVD類將有權訪問它。

例子:

Movie.java

public class Movie { 

    public enum Genre { 
     Horror, 
     SciFi, 
     RomCom 
    }; 

    protected Genre genre; 

    public Movie(Genre g) { 
     this.genre = g; 
    } 
} 

BluRay.java

public class BluRay extends Movie { 

    public BluRay(Genre g) { 
     super(g); 
    } 
} 

注意Genre並不一定是內Movie可言的,你可能會更好,如果它不是(只是在相同的包或類似的)。但如果你想GenreMovie,你可以在那裏。


旁註:你沒有問你的設計的反饋,但FWIW我可能不會讓Genre枚舉,因爲你必須以添加流派,這似乎是一個常見的重新編譯操作。

+0

謝謝T.J!簡單而有效! –

0

你可以直接聲明獨立於你的類的枚舉(在一個新文件中),然後用在我聲明枚舉類型的變量movie_type的影片類中。

0

當你想使用父類的成員時,你必須提供對它的訪問。

Java將訪問modyfier指定爲public,protected,(default),private。

如果將訪問modyfier設置爲受保護,您將能夠讀取和寫入該成員。

BTW

的想法存儲枚舉形式的性別是不是最好的德興性別變化,你將不得不在你的應用程序的開始添加的每個人。

枚舉的好解決方案將是設備類型。如DVD或CD,因爲這是您可以輕鬆管理的內容。