下面的这个程序是看了张孝祥老师讲的枚举视频中的,是一个用枚举来模拟的红绿灯的程序。但是有一点我始终是没搞太明白,先看看代码:
class LampTest
{
public static void main(String[] args)
{
Lamp la1 = Lamp.GREEN;
System.out.println(la1.nextLamp());
}
}
enum Lamp
{
GREEN(30)
{
public Lamp nextLamp()
{
return YELLOW;
}
},
YELLOW(3)
{
public Lamp nextLamp()
{
return RED;
}
},
RED(35)
{
public Lamp nextLamp()
{
return GREEN;
}
};
public abstract Lamp nextLamp();
private int time;
private Lamp(int time)
{
this.time = time;
}
public String toString()
{
if(this==GREEN)
return "green";
else if(this==RED)
return "red";
else
return "yellow";
}
}
我不明白的是,像程序中的GREEN(30)、YELLOW(3)、RED(35)他们都是作为Lamp的子类吗?
还有他们中的nextLamp方法,就是相当于子类复写父类的方法?是不?他们3个算是内部类吗?
enum Lamp类中的public abstract Lamp nextLamp();这个既然是抽象方法,那么类名前不需要abstract修饰吗?
对于这些,在视频中听的有点晕了。。。。我很疑惑,求助!!!!
|