Java面向对象(18)_枚举

Posted sunNoI

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java面向对象(18)_枚举相关的知识,希望对你有一定的参考价值。

2018-05-12

 

枚举

 

一、枚举的定义以及底层分析特点

  JDK1.5引入了新的数据类型——枚举,是一个特殊的类。就是固定的多个对象的集合。

  定义格式:

  [修饰符] enum 枚举类名{

    常量A,常量B,常量C;

  }

我们自定义的枚举类型,在编译(底层)都是直接继承于java.liang.Enum类,Enum是所有枚举的父类。

 

  枚举类的特点:

  1、枚举的直接父类java.liang.Enum,但不能显示继承Enum。

  2、枚举就相当于一个类,可以定义构造方法、成员变量、普通方法和抽象方法。

  3、默认私有的构造方法。

  4、每个实例分别用全局常量表示,枚举类的对象是固定的,实例个数有限,不能使用new来创建。

  5、枚举实例必须位于枚举体中最开始的部分,枚举实例列表后要有分号和其他成员变量相分隔。

  6、枚举实例后有花括号时,该实例是匿名内部类的对象(查看编译后的class文件)。

----------------------------------------------------------------------------------------------------------------------

 

二、枚举的使用

  1、枚举中都是全局静态常量,所以可以使用枚举类名调用。

    Weekday day = Weekday.MONDAY;

  2、因为java.liang.Enum类是所有枚举类的父类,所以所有的枚举对象可以调用Enum类中的方法。

    String name = 枚举对象.name();//返回枚举对象的常量名称

    int ordinal = 枚举对象.ordinal();//返回枚举对象的序号,从0开始

  3、编译器生成的枚举类的静态方法

    枚举类型[ ] values();

    Weekday[] ws = Weekday.values();//返回当前枚举类型的所有常量,使用一个数组封装起来。

  4、switch也支持操作枚举类型

    JDK1.6之前的switch语句只支持int,char,enum类型,支持枚举是因为底层使用的是枚举对象的ordinal,而ordinal的类型是int类型

  5、枚举的单例设计模式

 

参考:http://softbeta.iteye.com/blog/1185573

 



以上是关于Java面向对象(18)_枚举的主要内容,如果未能解决你的问题,请参考以下文章

Python面向对象高级编程-__slots__定制类,枚举

Java Review (十七面向对象----枚举类)

Java Review (十七面向对象----枚举类)

JavaScript18_面向对象,类与属性

day18--初识面向对象

Java面向对象编程题