当前位置 > it书童 > java > 正文

枚举类实现接口

java it书童 2020-11-29 17:15:58 0赞 0踩 1008阅读 0评论

枚举类也可以实现一个或多个接口。与普通类实现一个或多个接口完全一样,枚举类实现一个或多个接口时,也需要实现该接口所包含的方法

定义一个接口

public interface GenderDesc {
    void info();
}

枚举类实现此接口方法

public enum Gender implements GenderDesc {
    MALE("男"), FEMALE("女");

    private final String name;

    Gender(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    @Override
    public void info() {
        System.out.println("这是一个用于定义性别的枚举类");
    }
}

这种方式,枚举类的各个对象值都拥有同样的接口实现方法,如:

public static void main(String[] args) {
    Gender g1 = Enum.valueOf(Gender.class, "FEMALE");
    g1.info();

    Gender g2 = Enum.valueOf(Gender.class, "MALE");
    g2.info();
}

源码 javaDemo 0fc5ec5

如果我们要让不同枚举值有不同的接口实现方法体,需要进行以下改造:

public enum Gender implements GenderDesc {
    MALE("男") {
        @Override
        public void info() {
            System.out.println("男性对象实现的接口");
        }
    },
    FEMALE("女") {
        @Override
        public void info() {
            System.out.println("女性对象实现的接口");
        }
    };

    private final String name;

    Gender(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    @Override
    public void info() {
        System.out.println("枚举类实现的接口");
    }
}

再次调用,结果如下:

源码 javaDemo a2b1e29

关于我
一个文科出身的程序员,追求做个有趣的人,传播有价值的知识,微信公众号主要分享读书思考心得,不会有代码类文章,非程序员的同学请放心订阅
转载须注明出处:https://www.itshutong.com/articles/914