基础加强_枚举类型Enum
2013-01-14 17:13
239 查看
-------
android培训、java培训、期待与您交流! ----------
1、枚举类可以实现一个或多个接口,默认继承java.lang.Enum类,而不是Object类,并且Enum类实现了Serializable和Comparable接口;
2、使用enum定义非抽象的枚举类默认会使用final修饰,不能派生子类。
如果枚举类包含抽象方法,默认为抽象类,可以派生子类,即可有枚举实例来实现抽象方法(匿名内部类)。
3、枚举类构造方法默认为private并且只能是private;
4、枚举类的实例必须在第一行显式列出,这些实例自动是public static final。如果不在第一行,编译器报错。
当枚举只有一个成员时,就可以作为一种单例的实现方式。
java.AWT.Color
采用抽象方法定义
-------
android培训、java培训、期待与您交流! ----------
android培训、java培训、期待与您交流! ----------
枚举:
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个。/* * 用普通类实现枚举功能,定义一个WeekDay1类实现枚举功能 * * 私有的构造方法 * 每个元素分别用一个公有的静态成员变量表示 * 可以有若干公有方法或抽象方法。采用抽象方法定义nextDay就将大量的if.else语句转移成了一个个独立的类。 */ public abstract class WeekDay1 { //私有构造方法 private WeekDay1(){} //每个元素分别用一个公有的类变量表示 public final static WeekDay1 SUN = new WeekDay1(){ @Override public WeekDay1 nextDay() { return MON; } }; public final static WeekDay1 MON = new WeekDay1(){ @Override public WeekDay1 nextDay() { return SUN; } }; //采用抽象方法定义nextDay就将大量的if.else语句转移成了一个个独立的类。 public abstract WeekDay1 nextDay(); /* { * 判断并返回this的下一个类 * } */ //定义通过get获取的方法 public static WeekDay1 getWeekDay(int i){ switch (i){ case 1: return MON; case 0: return SUN; default : return null; } } public String toString(){ return this==SUN?"SUN":"MON"; } }
枚举类:
enum 关键字,和class、interface相同,用来定义枚举类。1、枚举类可以实现一个或多个接口,默认继承java.lang.Enum类,而不是Object类,并且Enum类实现了Serializable和Comparable接口;
2、使用enum定义非抽象的枚举类默认会使用final修饰,不能派生子类。
如果枚举类包含抽象方法,默认为抽象类,可以派生子类,即可有枚举实例来实现抽象方法(匿名内部类)。
3、枚举类构造方法默认为private并且只能是private;
4、枚举类的实例必须在第一行显式列出,这些实例自动是public static final。如果不在第一行,编译器报错。
当枚举只有一个成员时,就可以作为一种单例的实现方式。
java.AWT.Color
采用抽象方法定义
枚举示例
public class EnumTest { public static void main(String[] args) { // 测试手动实现的枚举类 WeekDay1 weekDay1 = WeekDay1.MON; System.out.println(weekDay1.nextDay()); //测试枚举类 WeekDay weekDay = WeekDay.FRI; System.out.println(weekDay); System.out.println(weekDay.name()); //int ordinal() 返回枚举常量的序数 System.out.println(weekDay.ordinal()); //valueOf("xx")和values()方法时枚举类生成字节码文件时自动添加的。 //valueOf()返回该枚举类的指定的枚举常量 System.out.println(WeekDay.valueOf("SUN").toString()); //values()返回枚举数组,数组包含枚举所有的元素 System.out.println(WeekDay.values().length); } //定义一个WeekDay内部类,该类为枚举类 public enum WeekDay{ //枚举值必须在第一行列出,枚举元素MON和MON()的效果一样,都是调用默认的构造方法 SUN(1),MON(),TUE,WED,THI,FRI,SAT; //默认构造方法 private WeekDay(){System.out.println("默认");} //带参数的构造方法 private WeekDay(int day){System.out.println("有参数");} } /* 定义一个交通灯枚举类; 包含nextLamp抽象方法和time属性; 将构造函数私有化。 */ public enum TrafficLamp{ RED(30){ public TrafficLamp nextLamp(){ return GREEN; } }, GREEN(45){ public TrafficLamp nextLamp(){ return YELLOW; } }, YELLOW(5){ public TrafficLamp nextLamp(){ return RED; } }; public abstract TrafficLamp nextLamp(); //交通灯每个枚举对象带有一个时间属性 private int time; private TrafficLamp(int time){this.time = time;} } }
-------
android培训、java培训、期待与您交流! ----------
相关文章推荐
- 0042 JAVA枚举类型enum【基础】
- 【基础】C语言enum枚举类型解析
- 《黑马程序员》基础加强---枚举类型
- java基础知识——Enum,枚举类型
- Java基础三:enum枚举类型
- 基础加强—02—枚举enum
- JAVA基础加强:枚举(Enum)
- 使用GetEnumName和GetEnumValue获取枚举类型的名称和数值
- JAVA基础加强_高新技术_收获六
- Java 基础学习四:Enum 枚举类
- Java基础加强
- java基础加强5--类加载器
- HTML5基础加强css样式篇(盒子阴影属性:box-shadow)(三十六)
- 黑马程序员_java基础加强7_多线程加强
- C++11特性(9):强枚举类型enum
- 黑马程序员_java基础加强11_空中网题解_自己做的答案
- 黑马程序员__关于学习Java基础加强的总结_2
- C# 基础加强(二) 编译执行过程器
- 黑马程序员_基础加强小结
- C# 基础加强(三) 虚方法:virtual