黑马程序员技术交流社区
标题:
张老师的枚举,理解的不好,求解释大致的运行过程
[打印本页]
作者:
whs_nk
时间:
2013-3-30 14:57
标题:
张老师的枚举,理解的不好,求解释大致的运行过程
public class TrafficLamp {
/**
* @param args
*/
public static void main(String[] args) {
trafficLamp2 lamp = trafficLamp2.RED;
}
public enum trafficLamp2{
RED(30){
public trafficLamp2 nextLamp(){
return GREEN;
}
},
GREEN(45){
public trafficLamp2 nextLamp(){
return null;
}
},
YELLOW(5){
public trafficLamp2 nextLamp(){
return null;
}
};//枚举值必须放在第一行
public abstract trafficLamp2 nextLamp();
private int time;
private trafficLamp2(int time){
int i=0;
this.time = time;
System.out.println(this.time+"---It is "+this.name()+" now-----"+(i++));
}//构造方法私有化
}
}
复制代码
作者:
陆旭东
时间:
2013-3-30 17:34
public class TrafficLamp {
/**
* @param args
*/
public static void main(String[] args) {
trafficLamp2 lamp = trafficLamp2.RED;
}
public enum trafficLamp2{
RED(30){
// 具体实现nextlight方法,表示亮灯后下一个灯是什么颜色
public trafficLamp2 nextLamp(){
return GREEN;
}
},
GREEN(45){
public trafficLamp2 nextLamp(){
return null;
}
},
YELLOW(5){
public trafficLamp2 nextLamp(){
return null;
}
};//枚举值必须放在第一行
//枚举类中只能定义私有的成员变量和私有的构造方法,先定义一个抽象的方法然后到每个具//体的枚举对象中再去具体实现。
public abstract trafficLamp2 nextLamp();
private int time;
private trafficLamp2(int time){
int i=0;
this.time = time;
System.out.println(this.time+"---It is "+this.name()+" now-----"+(i++));
}//构造方法私有化
}
}
你要看老师写这段代码的过程,如果一下子就拿到这段代码,相信新手很少能看懂。我当时就是看老师写代码的过程,这段枚举代码首先是创建了红绿黄三个枚举对象,然后是给枚举类定义nextLamp()方法,而刚刚创建的三个枚举对象又是三个匿名内部子类相应的对象,然后分别实现枚举父类的抽象方法nextLamp(),而红绿灯又有时间,所以在创建三个对象时分别传入它们的延迟时间,这样又重载了构造方法,就是这样。
作者:
whs_nk
时间:
2013-3-30 21:37
陆旭东 发表于 2013-3-30 17:34
public class TrafficLamp {
/**
嗯,就是这样,谢谢!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2