枚举类定义,实现接口与其常用方法

一.枚举类定义:

步骤一:提供当前枚举类的对象,且多个对象之间用",“隔开,最后一个对象用”; "结束。示例:

enum Season {
	// 1.提供当前枚举类的对象,多个对象之间用“,”隔开,末尾对象“;”结束
	SPRING("春天", "春来花开"),
	SUMMER("夏天", "夏日炎炎"), 
	AUTUMN("秋天", "秋风萧瑟"),
	WINTER("冬天", "寒风凛凛");
}

步骤二:声明枚举类(Season)对象的属性:private final 修饰。示例:

private final String seasonName;
private final String seasonDesc;

步骤三:私有化类的构造器,并给对象属性赋值。示例:

private Season(String s1, String s2) {
		seasonName = s1;
		seasonDesc = s2;
	}

步骤四:其他需求:例如获取枚举类对象的属性。示例:

public String getSeasonName() {
		return seasonName;
	}

public String getSeasonDesc() {
		return seasonDesc;
	}

二.枚举类常用方法:

1.toString():如果未重写该方法,则返回当前枚举类对象常量的名称;如果自己重写了,则根据自己的需求返回String类型的值。(未重写)运行示例:

Season season = Season.SUMMER;
System.out.println(season.toString());

结果为:SUMMER

2.values():返回枚举类型的对象数组,该方法可以很方便地遍历所有的枚举值。示例:

Season[] values = Season.values();
for(int i = 0;i<values.length;i++) {
	System.out.println(values[i]);
}

结果为:SPRING、SUMMER、AUTUMN、WINTER

3.valueOf(String str):可以把一个字符串转为对应的枚举类对象,要求字符串必须是枚举类对象。示例:

Season winterSeason = Season.valueOf("WINTER");
		System.out.println(winterSeason);

结果为:WINTER

三.枚举类实现接口:

情况一:实现接口,在enum类中实现抽象方法;示例:

interface Info{
	void show();
}
enum Season implements Info{
	// 1.提供当前枚举类的对象,多个对象之间用“,”隔开,末尾对象“;”结束
	SPRING("春天", "春来花开"),
	SUMMER("夏天", "夏日炎炎"), 
	AUTUMN("秋天", "秋风萧瑟"),
	WINTER("冬天", "寒风凛凛");
	
	public void show() {
		System.out.println();	
	}
}

运行代码:

Season season = Season.AUTUMN;
season.show();

说明此时可以调用show()方法;

情况二(重点):让枚举类的对象分别实现接口中的抽象方法;示例:

public class enum1 {
	public static void main(String[] args) {
		 Season[] season = Season.values();
		 for(int i = 0;i<season.length;i++) {
			 System.out.println(season[i]);
			 season[i].show();
		 }
	}

}
interface Info{
	void show();
}
enum Season implements Info{
	// 1.提供当前枚举类的对象,多个对象之间用“,”隔开,末尾对象“;”结束
	SPRING("春天", "春来花开"){
		public void show() {
			System.out.println("春天在哪里");
		}
	},
	SUMMER("夏天", "夏日炎炎"){
		public void show() {
			System.out.println("夏天在哪里");
		}
	}, 
	AUTUMN("秋天", "秋风萧瑟"){
		public void show() {
			System.out.println("秋天在哪里");
		}
	},
	WINTER("冬天", "寒风凛凛"){
		public void show() {
			System.out.println("冬天在哪里");
		}
	};
}

结果为:

SPRING春天在哪里
SUMMER夏天在哪里
AUTUMN秋天在哪里
WINTER冬天在哪里