public enum TrafficText {
/*首先呢这里的green和red,yellow是作为该枚举类的惟独的3个实例化对象,由public static final来修饰的
//由于是静态成员,所以这3个对象可以直接用类来访问,如TrafficText.RED,除此之外该枚举类还可以拥有自己的属性,例如
* 下面的private int num这个属性,所以在构造函数的时候需要初始化,值得一提的是由于这个类只能有这个3个对象所以必须将
* 其构造函数私有化,接下来就是你所得枚举内部类的问题,如果在枚举内部有了抽象方法,那么该方法只能由其子类来实现,而我们
* 知道一旦父类TrafficText里面有了抽象方法,那么这个父类本身是不能new出对象的,也不能创立对象,所以如果想调用这个抽象类
* TrafficText里面的方法就必须通过此类的子类来实现了,所以这个下面的GREEn,RED,YELLOW实际上是其子类对象来构成这个枚举
* 的元素;所以后面的大括号就是用来复写这个抽象方法的,:我们知道匿名内部类的的格式是:new 父类或接口(){子类的方法内容}.子类方法();
* 前面的部分new 父类或者接口名()的部分其实就是此枚举类中的对象yellow,green,red,所以后面直接接口号用来复写父类的方法即可
* */
GREEN(10)
{
public TrafficText turnColour()
{
return YELLOW;
}
},
RED(20){
public TrafficText turnColour()
{
return GREEN;
}
},
YELLOW(30)
{
public TrafficText turnColour()
{
return GREEN;
}
};
public abstract TrafficText turnColour();
private int num;
private TrafficText(int num)
{
this.num=num;
}
}
这个也是我自己的总结,希望能给你帮助,也求版主能给分,纯手动党,不容易啊! |