黑马程序员技术交流社区

标题: 看完高新技术后,总结的枚举,欢迎参观。 [打印本页]

作者: 李春丽    时间: 2014-9-30 16:07
标题: 看完高新技术后,总结的枚举,欢迎参观。
5,枚举 1.5以后的新特性。
> 枚举就是要【让某个类型的 变量的取值 只能为若干个 固定值 中的一个,否则,编译器就会报错】。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方法在开发阶段无法实现这一目标。
>> 普通类实现枚举功能
----私有的构造方法
    不能随便创建对象。
    privateWeekDay(){}
----每个元素分别用一个公有的静态成员变量表示
    public finalstatic WeekDay SUN = new WeekDay();//需要多少写多少元素。
----可以有若干公有方法或抽象方法,例如,要提供nextDay方法必须是抽象的。采用抽象方定义nextDay就将大量的if.else语句转移成了一个个独立的类。
    publicWeekDay nextDay(){
    if(this==SUN0{
           return MON;
    }else{
           return SUM;
    }
   }-->public abstract WeekDay nextDay();成语写法为:
    public finalstatic WeekDay SUN =new WeekDay(){
    publicWeekDay nextDay(){
        return MON;
    }   
};
    //隐式调用的:
    publicString toString(){
    returnthis==NUM?"NUM":"SUM";//用大量if.else写出全部。
    }
    //调用类中:
    main:WeekDayweekDay=WeekDay.MON;
     System.out.println(weekDay.nextDay());//SUM
>> 枚举的基本应用(枚举的入门)
---自动生成toString()方法。
---方法:
    枚举类对象.name()//获取对象名称
    枚举类对象.ordinal()//获取对象的排序位置,第几个。
    枚举类.valueOf("str")//返回str对应的类的实例对象。
    枚举类.values()//把枚举中的元素转换成数组,.length等对数组操作。
>> 实现带有构造方法的枚举
构造方法必须是被 private 修饰。
创建元素时,不带()的调用无参的构造方法。
带有()的由()中的内容确定调用的哪个有参构造方法。
>> 实现带有抽象方法的枚举
>> 注意:
1,枚举的元素列表 必须位于所有的成分 之前。
2,构造方法必须 私有。
3,创建元素时,自动调用对应参数的构造方法。有几个元素就调用几次构造方法。
4,元素后面的 ; 可以有也可以没有。当后面有内容时,要加 ; 。
5,【!】枚举只有一个成员时,就可以作为一种单例的实现方式。
    单例可以用枚举实现。
    枚举就是一个特殊的类,构造方法不用自己写了,默认的就是私有的,不带参数的。new Instance()代码也不用自己写了,元素自然的就new出来了。
>>从交通灯枚举类中可以获取:
  1,内部类,
  2,提高了一种编程的思想:
  3,类的方法返回的类型可以是本类类型。
  4,类里面可以定义静态常量。常量指向的结果就是自己这个类型的实例对象。
交通灯类:
    public enumTrafficLamp{
        RED(30){
            public  TrafficLamp nextLamp(){
                returnGREEN;
            }
        },
        GREEN(45){
            public  TrafficLamp nextLamp(){
                returnYELLOW;
            }           
        },
        YELLOW(5){
            public  TrafficLamp nextLamp(){
                returnRED;
            }           
        };
        publicabstract TrafficLamp nextLamp();
        privateint time;
        privateTrafficLamp(int time){this.time = time;}
    }

作者: wyf20106    时间: 2014-9-30 23:30
谢谢分享!
作者: 旺丶财    时间: 2014-10-1 00:12
赞一个 。
作者: Pheinogin    时间: 2014-10-1 00:25
感谢分享经验
作者: 戏言丶    时间: 2014-10-1 00:45
谢谢分享,收藏了
作者: 我为你着迷    时间: 2014-10-1 03:06
很详细  谢谢分享
作者: 不系之舟王    时间: 2014-10-1 09:03
收藏看看
作者: 苏乞儿    时间: 2014-10-1 15:32
太经典。。。正看到这个部分呢。。。谢了
作者: ☆枫の云    时间: 2014-10-1 16:04
感谢楼主分享!
作者: 在学野马    时间: 2014-10-1 21:49
48期是不是不考高新了。。
作者: bayshier    时间: 2014-10-1 21:54
多谢分享

作者: 残羹夜宴丶    时间: 2014-10-2 08:13
完美,以前一直看不懂,不知道枚举是什么意思。
作者: liuxiang    时间: 2014-10-2 08:57
收藏了,以后有用
作者: wstt    时间: 2014-10-2 09:21
呵呵,总结的不错哈,加油!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2