-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
1.枚举的概念:JDK1.5出现的
枚举是一种特殊的类,是一个不可被继承的final类,枚举中的每一个元素都是一个类静态常量。
用枚举类规定值,以后用此类型定义的值只能是这个类中规定好的那些值,若不是这些值,编译器会报错。
枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法。
自定义的枚举类默认都继承Enum类,所以每个枚举类都会有Enum的方法:
ordinal()// 返回枚举常量的序数
name()//返回此枚举常量的名称
toString()//返回枚举常量的名称
valueOf(Class<T> 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类).。
枚举中只定义一个元素可以实现单例。
版权声明:本文为xiewang1原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。