您的位置:首页 > 职场人生

黑马程序员_java中的枚举

2014-07-13 18:40 218 查看


 ------- android培训java培训、期待与您交流!
----------

一、enum枚举:它是Type 是 Java 编程语言中所有类型的一种,他的实例对象表示的是一些具有一定取值范围的一类数据,通过枚举的实现,在编译时期杜绝那些在范围外的数据的输入,提高代码的安全性。例如:表示时间的年、月、日、星期等。下面通过定义一个WeekDay星期类,来说明枚举的一些相关的知识:

   

1)枚举列表中的成员都是常量值,用大写表示。

1)  枚举当中参数列表是枚举类中的实例对象,如果枚举类中只有参数列表时,最后的双引号可以省略;而如果,枚举类中除了参数列表外,还有其他成员,则其后的双引号必须写上,且,其它成员必须位于此参数列表之后。

2)  枚举列表中的成员都是有序性的,它的成员方法int  ordinal()方法返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。

3)  枚举中的构造函数必须是私有的。

二、带有多个构造的枚举:构造函数是用来实例化对象的,带有多个构造函数的枚举怎么实现其构造函数的调用呢?

 

public
enum
WeekDayTest {
    MON(0),TUE(1),WEN,THR,FRI,SAU,SUN;
    private WeekDayTest() {
 
        System.out.println("无参构造方法");
               
            }
    private  WeekDayTest(int day) {
                // TODO自动生成的方法存根
            System.out.println("有参构造方法");

 

输出结果:
有参构造方法
有参构造方法
无参构造方法
无参构造方法
无参构造方法

结果分析:由于类加载时会加载类的静态属性值(MON(0),TUE(1),WEN,THR,FRI,SAU,SUN),默认情况下(即静态值后面的小括号中没有参数),会调用无参构造方法,若静态值后面的小括号中有参数,如上面代码中的MON(0),TUE(1),会调用有参构造方法。

三、带有抽象方法 的枚举:public
enum
TrafficLamp {
        RED(30){
            public TrafficLamp nextLamp()
            {
                return
GREEN;
            }
           
        },
       
        GREEN(20){
            public TrafficLamp nextLamp()
            {
                return
YELLOW;
            }
        },
        YELLOW(40){
            public TrafficLamp nextLamp()
            {
                return
RED;
            }
        };
        public
abstract
TrafficLampnextLamp();
        private
int
time;
        private TrafficLamp (int time)
        {
            this.time=time;
        }
 
}

注意:此枚举类中虽有抽象方法,但是不可以将enum用abstract修饰,这是与其他类不同的地方,其抽象方法实现方式与普通类一样的,不能用new的方式直接创建对象,但可以用花括号 的方式完成对父类的实现。

 


 ------- android培训java培训、期待与您交流!
----------

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: