Java学习笔记-枚举(enum)

-----------android培训java培训、java学习型技术博客、期待与您交流!------------ 

 

1.枚举的概念:JDK1.5出现的

枚举是一种特殊的类,是一个不可被继承的final类,枚举中的每一个元素都是一个类静态常量。

用枚举类规定值,以后用此类型定义的值只能是这个类中规定好的那些值,若不是这些值,编译器会报错。

枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法。

自定义的枚举类默认都继承Enum类,所以每个枚举类都会有Enum的方法:

ordinal()// 返回枚举常量的序数
name()//返回此枚举常量的名称

toString()//返回枚举常量的名称

valueOf(Class enumType, String name) //返回带指定名称的指定枚举类型的枚举常量。

2.枚举的定义:(关键字:enum)

代码示例:

package enumtest;

public enum WeekDay {
	SUN,MON,TUE,WEN,THI,FRI,SAT
}

3.在枚举中定义构造方法:

代码示例:

package enumtest;
public class EnumTest{
	public static void main(String [] args){
		WeekDay weekday = WeekDay.SUN;
		WeekDay weekday1 = WeekDay.MON;
		System.out.println(weekday);
		System.out.println(weekday1);
	}
}
enum WeekDay{
	SUN(0),MON,TUE,WEN,THI,FRI,SAT;//枚举中的元素必须放在第一行
	private WeekDay(){//构造方法必须私有
		System.out.println("无参构造函数");
	}
	private int num;
	private WeekDay(int num){//有参构造方法
		this.num=num;
		System.out.println("有参构造函数");
	}
}



 

4.枚举中定义抽象方法:

代码示例:

enum TrafficLamp{
	RED(30){//枚举中每一个元素都是父类的子类,所以必须重写枚举类中的抽象方法,调用父类的构造方法。
		@Override
		public TrafficLamp nextLamp() {//重写父类的抽象方法。
			return GREEN;
		}
	},GREEN(45){
		@Override
		public TrafficLamp nextLamp() {
			return YELLOW;
		}
	},YELLOW(5){
		@Override
		public TrafficLamp nextLamp() {
			return RED;
		}
	};
	public abstract TrafficLamp nextLamp();//抽象方法
	private int time;
	private TrafficLamp(int time) {//有参构造函数
		this.time=time;
	}
}


 

枚举可以实现接口但不能继承类(因为已经继承了Enum类).。

枚举中只定义一个元素可以实现单例。

-----------android培训java培训、java学习型技术博客、期待与您交流!------------ 

你可能感兴趣的:(enum,枚举)