黑马程序员-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";
                            }
                        };

 


    详细请查看:http://edu.csdn.net/heima
posted @ 2012-04-16 17:41  lcode  阅读(508)  评论(0编辑  收藏  举报