黑马程序员技术交流社区
标题:
今天的最后一个问题了,关于枚举的问题
[打印本页]
作者:
crazy_primitive
时间:
2013-7-14 10:44
标题:
今天的最后一个问题了,关于枚举的问题
本帖最后由 杨兴庭 于 2013-7-15 17:52 编辑
public enum TrafficLamp{
Red(30){ //听张老师讲了还是有点儿似懂非懂
public TrafficLamp nextLamp(){
return Green;
}
},
Green(45){
public TrafficLamp nextLamp(){
return Yellow;
}
},
Yellow(5){
public TrafficLamp nextLamp(){
return Red;
}
};
public abstract TrafficLamp nextLamp();//抽象方法
private int time;
private TrafficLamp(int time) {
this.time = time;
}
}
复制代码
作者:
王靖远
时间:
2013-7-14 10:55
(30)这算是带构造参数的枚举。枚举类中的抽象方法每一个枚举元素都要实现
作者:
280270738
时间:
2013-7-14 11:01
你应该把RED当作一个对象,这是调用带参数的构造方法。
作者:
白堇翎
时间:
2013-7-14 12:01
首先枚举是为了保证安全的一个机制.
比如你这个例子.限制了只能调用red,green,yellow这三个成员.
你定义了一个抽象函数叫nextlamp,然后给三个成员都写了一个构造函数以达到你的期望目的---在调用该成员时返回你的期望值(下一个灯的颜色).
最后为了使这段代码更加贴近实际,又加上了一个带参数的构造函数来定义每个灯持续的时间.这个参数是Int类型的. 所以你必须给每个灯赋值.
不知道这样解释的够不够清楚.
作者:
wll_sx1990
时间:
2013-7-14 23:06
呵呵,你这问题够大朋友。我是这么理解枚举的:枚举就可以认为是多个单例对象,这些个对象都必须符合这个枚举类的规则。那这个规则是怎么样的呢,从构造函数说来
18.private int time;
19.private TrafficLamp(int time) {
20.this.time = time;
21.}
复制代码
这个类要求必须有time这么一个成员属性。所以在对象上也得加入time参数。
而类中有抽象方法,这更好理解了,普通类继承一个普通抽象类也得实现那些抽象方法呢,所以在得出这个对象的时候必须实现那些抽象方法。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2