黑马程序员技术交流社区
标题:
枚举的基本定义类型的问题
[打印本页]
作者:
heheka123
时间:
2014-4-9 16:39
标题:
枚举的基本定义类型的问题
看不懂这段代码,这个是枚举的基本模式吗?
RED(35)这里面传入值,但是里面并没定义带参数的方法?
{}之间为什么用,分开呢?
public enum TrafficLamp
{
RED(35)
{
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;}
}
复制代码
作者:
╰青青子佩ˊゝ
时间:
2014-4-9 17:01
总结了5点,希望能帮到你,如下面代码所示。
//1.先来个最基本,最简单的枚举
public enum Color{
GREEN,RED,YELLOW,ORANGE,BLUE
}
//2.TrafficLamp中的每一个元素就是他的的实例对象,而这些实例对象可以有共同的构造方法和普通方法。如下所示
public enum Color2{
GREEN,RED(3),YELLOW,ORANGE,BLUE;
//这里来写两个构造函数,不同的实例对象可以使用不同的构造函数,如上行代码中比其他元素更特殊的RED(3)所示,用了带参数构造函数,其他的用无参数构造函数。
//无参数构造函数
private Color2(){
System.out.println("hello");
}
//有参数构造函数
private Color2(int num){
System.out.println(num);
}
}
//3.通过上面两个例子,再来理解这个枚举
public enum TrafficLamp
{
RED(35)
{
public TrafficLamp nextLamp()
{
return GREEN;
}
},
GREEN(45)
{
public TrafficLamp nextLamp()
{
return YELLOW;
}
},
YELLOW(5)
{
public TrafficLamp nextLamp()
{
return RED;
}
};
//4.这下面一小部分代码,即说明每个实例对象都 有方法nextLamp(),都有一个变量time和带参数int型数据的构造函数.
//5.普通方法必须写成静态的,然后被子类复写。
public abstract TrafficLamp nextLamp();
private int time;
private TrafficLamp(int time)
{this.time =time;}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2