-------
android培训、
java培训、期待与您交流! ----------
使用enum关键字可以实现,也可以使用普通的class关键字实现同样的功能,因为enum也是一种特殊的类。
例子:实现一个交通灯系统。
先使用class实现:
使用enum实现
如果将枚举中的对象限定成一个,可以将其看成一个单例对象。
枚举
一类包含特定常量对象的类。使用enum关键字可以实现,也可以使用普通的class关键字实现同样的功能,因为enum也是一种特殊的类。
例子:实现一个交通灯系统。
先使用class实现:
public abstract class TrafficLamp {
// 定义了3个本类的常量对象,作为枚举中的3中状态。当其他类调用本类对象时,只能调用3个对象中的某一个。
public static final TrafficLamp RED = new TrafficLamp(45) {
@Override
public TrafficLamp nextLamp() {
return GREEN;
}
};
public static final TrafficLamp YELLOW = new TrafficLamp(5) {
@Override
public TrafficLamp nextLamp() {
return RED;
}
};
public static final TrafficLamp GREEN = new TrafficLamp(40) {
@Override
public TrafficLamp nextLamp() {
return YELLOW;
}
};
// 此处应该将构造函数访问权限设置为private,让外部无法直接初始化本类对象。
private TrafficLamp() {
}
// 这个构造函数用于给交通灯对象加上切换时间
private TrafficLamp(int time) {
// 将时间获得
this.time = time;
}
// 定义一个变量表示交通灯切换的时间
private int time;
// 交通灯切换的方法
public abstract TrafficLamp nextLamp();
}
使用enum实现
public enum TrafficLamp {
//此处实际上是子类调用父类的构造方法初始化
RED(45) {
@Override
public TrafficLamp nextLamp() {
return GREEN;
}
},
YELLOW(5) {
@Override
public TrafficLamp nextLamp() {
return RED;
}
},
GREEN(40) {
@Override
public TrafficLamp nextLamp() {
return YELLOW;
}
};
private int time;
// 函数不能放到常量对象之前
private TrafficLamp() {
};
private TrafficLamp(int time) {
this.time = time;
}
public abstract TrafficLamp nextLamp();
}
如果将枚举中的对象限定成一个,可以将其看成一个单例对象。