引用张老师视频教程的讲解:
一. 知识概念概述: 通过enum定义枚举类,在其中列出所有同类的元素常量值作为子类的实例对象使用。
(1) 枚举类是一个特殊的类,每个元素都是该类的一个实例对象。
用枚举类规定值,如上面的Week。以后用此类型定义的值只能是这个类中规定好的那些值,
若不是这些值,编译器不会通过。好处:在编译时期就会发现错误,表明值不符合,减少了运行时期可能发生的错误。
如果想在一个类中编写完每个枚举类和测试调用类,那么可将枚举类定义成调用类的内部类。
枚举类是一个class,而且是一个不可被继承的final类,其中的元素都是类实例的静态常量。
(2) 构造器:构造器只是在构造枚举值的时候被调用。
构造器只有私有private,绝不允许有public构造器。这样可以保证外部代码无法重新构造枚举类的实例,
这样是合情合理的,因为枚举值是public static final的常量,但是枚举类的方法和数据域是可以被外部访问的。
构造器可以有多个,调用哪个即初始化相应的值。
(3) 所有的枚举类都继承了Enum方法,方法如下:
1) toString() ---> 返回枚举量的名称
2) ordina() ---> 返回枚举值在枚举类中的顺序,按定义的顺序排
3) getClass() ---> 获取对应的类名
静态方法:
1) valueOf(String e) ---> 转为类中对应的对象,即将字符串转为对象
2) values() ---> 获取数组,将元素放入一个数组中。
(4) 注意:
1、元素列表即所有的元素项目,必须放在整个类的最前面。
2、元素列表后要有分号
3、枚举类中的方法为private
4、在元素后跟上(),就可指定要使用的构造方法,含参数。
5、枚举类中的每个元素都是它的一个子类对象,当枚举类中存在abstract方法,须在子类后加{},
并在其中实现此方法。
二. 代码注释:- package cn.java.test;
- //定义一个类Mon
- public class Mon
- { //主函数入口
- public static void main(String[] args)
- { //枚举实例值是public static final的常量,可以通过枚举类名直接引用
- System.out.println("英文格式:"+Week.Mon);
- System.out.println("中文格式:"+Week.Mon.toLocaleString());
- }
- public enum Week
- { // 枚举列表成员MON必需在首句
- Mon()
- { //实现枚举类中的抽象方法toLocaleString()
- public String toLocaleString()
- { //返回值类型为String
- return "星期一";
- }
- };
- //当枚举类中存在abstract方法时,须在子类MON后加{},并在其中实现此方法。
- public abstract String toLocaleString();
- }
- }
复制代码 |