继承枚举值java

时间:2013-10-29 08:53:32

标签: java class inheritance enums

所以我一直在搜索,希望能找到某种想法或方法。

我有一个名为movie的基类,其实例变量为id,name,loaned和borrower。然后这个电影类由两个类bluray和dvd派生。基本上长话短说,它们都建在我正在建造的图书馆课堂上。在电影类型中,我想创建一个名为genre的枚举变量,它包含可以应用于电影的类型。但是我不确定如何继续将这个枚举变量继承到bluray和dvd类。

我被告知可以这样做,但如果有人能说明我如何做到这一点那就太棒了!

3 个答案:

答案 0 :(得分:1)

  

在电影类型中,我想创建一个名为genre的枚举变量,它保存可应用于电影的类型。但是我不确定如何继续将这个枚举变量继承到bluray和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之内,如果不是(仅在相同的包或类似内容中),您可能会更好。但是,如果您<{1}}中的想要 Genre,那么您可以将它放在那里。


旁注:您没有询问有关您的设计的反馈,但FWIW我可能不会使Movie成为枚举,因为那时您必须重新编译才能添加类型,这似乎是一个常见的操作

答案 1 :(得分:0)

您可以将枚举声明与您的类(在新文件中)分开,然后在我声明枚举类型的变量movie_type的影片类中使用。

答案 2 :(得分:0)

如果要使用父类的成员,则必须提供对其的访问权限。

Java将访问modyfier定义为public,protected,(default),private。

如果将访问modyfier设置为protected,您将能够读取和写入该成员。

顺便说一句

以enum的形式存储性别的想法并不是性别变化的最佳设计,您必须在应用程序开始时添加每个性别。

枚举的良好解决方案是设备类型。比如DVD或CD,因为这是你可以轻松管理的东西。