34、枚举详解
2016-05-28 10:41
351 查看
[b]知识点介绍[/b]
1、枚举可以实现一个或多个接口。枚举默认继承于java.lang.Enum类,而不是Object类。Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口
2、使用enum定义、非抽象的枚举默认会使用final修饰,因此枚举不能派生子类
3、枚举类的构造器只能使用private访问控制符
4、枚举类的所有势力必须在枚举类的第一行显示列出
下面是一个简单的枚举应用
枚举类的成员变量、方法和构造器
实现接口的枚举
1、由枚举类来实现接口里的方法——所有枚举值实现接口都是调用方法都有相同的行为
输出结果:
这里是公用接口的实现
这里是公用接口的实现
2、分别由每个枚举值来实现接口
输出结果:
这里是春季
这里是夏季
枚举抽象类
假设有一个Operation枚举类,它的4个枚举值PLUS、MINUS、TIMES、DIVIDE分别代表加、减、乘、除4种运算,该枚举类需要定义一个eval()方法来完成计算
输出结果:
1+2=3.0
5-3=2.0
3*4=12.0
10-2=5.0
1、枚举可以实现一个或多个接口。枚举默认继承于java.lang.Enum类,而不是Object类。Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口
2、使用enum定义、非抽象的枚举默认会使用final修饰,因此枚举不能派生子类
3、枚举类的构造器只能使用private访问控制符
4、枚举类的所有势力必须在枚举类的第一行显示列出
下面是一个简单的枚举应用
public class Test{ public static void main(String[] args) { SessonEnum e=Enum.valueOf(SessonEnum.class, "Spring"); System.out.println(e.name()); } } enum SessonEnum{ Spring,Summer,Fall,Winter; }
枚举类的成员变量、方法和构造器
public class Hello { public static void main(String[] args) { SessonEnum e=Enum.valueOf(SessonEnum.class, "Spring"); System.out.println(e.getName()); } } enum SessonEnum{ Spring("春"),Summer("夏"),Fall("秋"),Winter("冬"); private final String name; private SessonEnum(String name){ this.name=name; } public String getName(){ return name; } }
实现接口的枚举
1、由枚举类来实现接口里的方法——所有枚举值实现接口都是调用方法都有相同的行为
interface SessonInfo{ void info(); } enum SessonEnum implements SessonInfo { Spring("春"),Summer("夏"),Fall("秋"),Winter("冬"); private final String name; private SessonEnum(String name){ this.name=name; } public String getName(){ return name; } @Override public void info() { System.out.println("这里是公用接口的实现"); } } public class Test{ public static void main(String[] args) { SessonEnum spring=Enum.valueOf(SessonEnum.class, "Spring"); SessonEnum summer=SessonEnum.Summer; spring.info(); summer.info(); } }
输出结果:
这里是公用接口的实现
这里是公用接口的实现
2、分别由每个枚举值来实现接口
interface SessonInfo{ void info(); } enum SessonEnum implements SessonInfo { Spring("春"){ @Override public void info() { System.out.println("这里是春季"); } },Summer("夏"){ @Override public void info() { System.out.println("这里是夏季"); } },Fall("秋"){ @Override public void info() { System.out.println("这里是秋季"); } },Winter("冬"){ @Override public void info() { System.out.println("这里是冬季"); } }; private final String name; private SessonEnum(String name){ this.name=name; } public String getName(){ return name; } } public class Hello { public static void main(String[] args) { SessonEnum spring=Enum.valueOf(SessonEnum.class, "Spring"); SessonEnum summer=SessonEnum.Summer; spring.info(); summer.info(); } }
输出结果:
这里是春季
这里是夏季
枚举抽象类
假设有一个Operation枚举类,它的4个枚举值PLUS、MINUS、TIMES、DIVIDE分别代表加、减、乘、除4种运算,该枚举类需要定义一个eval()方法来完成计算
public class Test{ public static void main(String[] args) { System.out.println("1+2="+Operation.PLUS.eval(1, 2)); System.out.println("5-3="+Operation.MINUS.eval(5, 3)); System.out.println("3*4="+Operation.TIMES.eval(3, 4)); System.out.println("10-2="+Operation.DIVIDE.eval(10, 2)); } } enum Operation{ PLUS{ public double eval(double x, double y) { return x+y; } }, MINUS{ public double eval(double x, double y) { return x-y; } }, TIMES{ @Override public double eval(double x, double y) { return x*y; } }, DIVIDE{ @Override public double eval(double x, double y) { return x/y; } }; public abstract double eval(double x,double y); }
输出结果:
1+2=3.0
5-3=2.0
3*4=12.0
10-2=5.0
相关文章推荐
- PHOENIX操作HBASE
- acm 3 1001 problem a
- 剑指offer—字符串转换整数
- 区间对称原则
- 深入浅出ES6(一):ES6是什么
- T-Sql创建数据库&修改排序规则
- 多线程(一)概述
- iOS 关于枚举的使用
- oracle游标的使用
- JavaWeb 服务启动时,在后台启动加载一个线程。
- 专家系统
- 图的邻接表存储及其实现
- 【HDU】 1239 Calling Extraterrestrial Intelligence Again
- 用 Retrofit 2 简化 HTTP 请求(Jake Wharton)
- Linux常用Shell命令
- javaScript中的事件代理
- Java启动命令大观
- Text和String的区别
- eclipse web项目SVN同步,比较失败、报错illegalargumentexception
- Android 最火开发框架xUtils