技术文章 > java >  java基础 > 正文

java中enum实现接口

小妮浅浅

我们之前提到在枚举中,可以实现java接口的操作。这里我们分为两种情况讨论,一种是单个接口,另一种是组织接口,也就是同时接入多个接口。下面我们就使用enum实现接口的注意点进行讲解,然后在实现单个接口和多个接口的两种情况,分别带来代码示例的展示。

1.说明

枚举类和普通类一样,可以实现一个或多个接口,枚举类实现接口分为两种情况。

注:

枚举可以实现接口,但不能继承;

枚举不能只实现接口的方法,还必要书写枚举中的量才可以。

2.实现接口(单个)

若枚举类的所有枚举对象在调用实现的接口方法时,呈现相同的行为方式,则只要统一实现该方法即可;此时与普通类实现接口一样,没有任何区别。

public interface Behaviour {  
    void print();  
    String getInfo();  
}  
public enum Color implements Behaviour{  
    RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);  
    // 成员变量  
    private String name;  
    private int index;  
    // 构造方法  
    private Color(String name, int index) {  
        this.name = name;  
        this.index = index;  
    }  
//接口方法  
    @Override  
    public String getInfo() {  
        return this.name;  
    }  
    //接口方法  
    @Override  
    public void print() {  
        System.out.println(this.index+":"+this.name);  
    }  
}

3.使用接口组织枚举(多个)

若枚举类的每个枚举对象在调用实现的接口方法时,需要呈现出不同的行为方式,则可以让每个枚举对象分别来实现该方法。

public interface Show {
    void show();
}
 
//使用enum关键字定义枚举类
public enum  Season2 implements Show{
    //1.提供当前枚举类的对象,多个对象之间使用","隔开,末尾使用";"结束
    //系统默认使用public static final修饰
    SPRING("春天","鸟语花香"){
        //每个枚举对象分别来实现该方法
        @Override
        public void show() {
            System.out.println("春天是一个鸟语花香的季节!");
        }
    },
    SUMMER("夏天","夏日炎炎"){
        @Override
        public void show() {
            System.out.println("夏天是一个夏日炎炎的季节!");
        }
    },
    AUTUMN("秋天","秋高气爽"){
        @Override
        public void show() {
            System.out.println("秋天是一个秋高气爽的季节!");
        }
    },
    WINNER("冬天","寒风瑟瑟"){
        @Override
        public void show() {
            System.out.println("冬天是一个寒风瑟瑟的季节!");
        }
    };
 
    //2.声明Season对象的属性,又因为枚举类对象的属性不应允许被改动, 所以应该使用 private final修饰
    private final String seasonName;
    private final String seasonDesc;
 
    //3.枚举类的构造器只能使用 private 权限修饰符
    // 私有化构造器是为了保证不能在类的外部创建其对象,否则就不能确定对象的个数
    private Season2(String seasonName, String seasonDesc){
        this.seasonName=seasonName;
        this.seasonDesc=seasonDesc;
    }
 
    //其他需求:获取枚举类对象的属性
    //只需要提供属性的get方法即可,但是不能提供set方法,而且也不允许提供set方法,因为枚举类是不可变的常量类,不能被修改
    public String getSeasonName() {
        return seasonName;
    }
 
    public String getSeasonDesc() {
        return seasonDesc;
    }
}
 
public class SeasonTest {
    public static void main(String[] args) {
        Season2 spring = Season2.SPRING;
        spring.show();
 
        Season2 summer = Season2.SUMMER;
        summer.show();
 
        Season2 autumn = Season2.AUTUMN;
        autumn.show();
        
        Season2 winner = Season2.WINNER;
        winner.show();
    }
}

运行结果:

以上就是java中enum实现接口的两种情况讨论,在接口之前,我们要判断接口的数量,然后对应不同的情况使用enum的方法去解决。

免费视频教程
本文原创发布python学习网,转载请注明出处,感谢您的尊重!
相关文章
 java枚举是什么
 enum在java枚举中的使用
 java enum使用方法有几种
相关视频章节
 网络爬虫
 云端部署Web应用程序视频
 Web应用框架Flask和文件模板
 Web应用程序开发概述
 继承和多态
作者信息

小妮浅浅

认证0级讲师

最近文章
java编译命令是什么522
java的jdk是什么411
java Wrapper类的使用812
推荐视频
视频教程分类