我们之前提到在枚举中,可以实现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的方法去解决。



