Java 继承枚举值

Java 继承枚举值,java,class,inheritance,enums,Java,Class,Inheritance,Enums,所以我一直在搜索,希望能找到一些想法或方法 我有一个名为movie的基类,其实例变量为id、name、loaned和follower。然后,这个电影类由两个类bluray和dvd派生。基本上长话短说,它们都是在我正在构建的图书馆类中构建的。在电影类型中,我想创建一个名为genre的枚举变量,该变量保存可应用于电影的流派。但是,我不确定如何将此枚举变量继承到bluray和dvd类 有人告诉我这是可以做到的,但如果有人能告诉我怎么做,那就太好了 在电影类型中,我想创建一个名为genre的枚举变量,该

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

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

有人告诉我这是可以做到的,但如果有人能告诉我怎么做,那就太好了

在电影类型中,我想创建一个名为genre的枚举变量,该变量保存可应用于电影的流派。但是,我不确定如何将此枚举变量继承到bluray和dvd类

只需将其设置为非私有的电影类型的成员即可。(或者只是同一个包中的一个枚举,在电影类型之外。)然后bluray和dvd类将可以访问它

例如:

Movie.java

public class Movie {

    public enum Genre {
        Horror,
        SciFi,
        RomCom
    };

    protected Genre genre;

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

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

public class Movie {

    public enum Genre {
        Horror,
        SciFi,
        RomCom
    };

    protected Genre genre;

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

    public BluRay(Genre g) {
        super(g);
    }
}
请注意,
类型
根本不必在
电影
中,如果不在电影中,您可能会感觉更好(只是在相同的软件包或类似的软件包中)。但是如果你想在
电影
中找到
类型
,你可以在那里找到它



旁注:您没有要求反馈您的设计,但FWIW我可能不会将
流派
作为枚举,因为这样您就必须重新编译才能添加流派,这似乎是一个常见的操作。

您可以将枚举声明为与类分离(在新文件中)然后在movie类中使用,我在其中声明枚举类型的可变movie_类型。

当您要使用父类的成员时,必须提供对它的访问权限

Java规范将访问模块设置为public、protected(默认)、private

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

顺便说一句

由于性别的变化,以枚举的形式存储性别的想法不是最好的设计,您必须在应用程序开始时添加每种性别


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

@s的可能副本ᴜʀᴇsʜᴀᴛᴛᴀ: 不,她不是在问如何从枚举中派生。谢谢你的T.J!简单而有效!