黑马程序员-Java高新技术_枚举的实现原理视频学习笔记
java里枚举的意义跟c/c++里一样,但java里枚举类型为类,值为对象,有一些公共方法和静态方法。
使用举例:
//自定义构造函数 public enum WeekDay{ SUN,MON,TUE,WED,THI,FRI,SAT; private WeekDay(){}//要自己定义构造方法,必须使用private。 private WeekDay( int day){} } //定义抽象方法 public enum TrafficLamp{ RED{ public TrafficLamp nextLamp() { return GREEN; } }, GREEN{ public TrafficLamp nextLamp() { return GREEN ; } }, YELLOW{ public TrafficLamp nextLamp() { return RED; } }; public abstract TrafficLamp nextLamp(){} }
知识点1:如果要你设计的类能被打印,需要定义ToString方法。
知识点2:内部类。在内定义里面({}里),定义另一个类,如果是本类的子类可以用本类的类名代替子类类名,而不用指定特定的子类名,这叫匿名类。
知识点3:自己实现一个枚举
public abstract class WeekDay1 { private WeekDay1(){} public final static WeekDay1 SUN = new WeekDay1(){ @Override public WeekDay1 nextDay() { // TODO Auto-generated method stub return MON; } }; public final static WeekDay1 MON = new WeekDay1(){ @Override public WeekDay1 nextDay() { // TODO Auto-generated method stub return SUN; } }; public abstract WeekDay1 nextDay(); /*public WeekDay nextDay(){ if(this == SUN){ return MON; }else{ return SUN; } }*/ public String toString(){ return this==SUN?"SUN":"MON"; } };