枚举用法--带抽象方法的更牛
2017-05-12 15:35
113 查看
为什么需要枚举? 一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,此类问题在JDK5以前采用自定义带有枚举功能的类解决,Java5以后可以直接使用枚举予以解决。 JDK 5新增的 enum 关键字用于定义一个枚举类。
枚举类具有如下特性:
枚举类也是一种特殊形式的Java类。
枚举类中声明的每一个枚举值代表枚举类的一个实例对象。
与java中的普通类一样,在声明枚举类时,也可以声明属性、方法和构造函数,但枚举类的构造函数必须为私有的(这点不难理解)。
枚举类也可以实现接口、或继承抽象类。
JDK5中扩展了swith语句,它除了可以接收int, byte, char, short外,还可以接收一个枚举类型。
若枚举类只有一个枚举值,则可以当作单态设计模式使用。
=============
带抽象方法的枚举:
可以在里面定义抽象方法
不过写的方法看起来有点傻,暂时看不出优点,也不是类似继承的增强,
enum 是public static final的 enum又是可以定义抽象方法 感觉有矛盾
带抽象方法的枚举
------------推荐两篇不错博客
java基础加强--实现带有抽象方法的枚举 - 时间挤挤 - 博客频道 - CSDN.NET http://blog.csdn.net/congwiny/article/details/18894641
Java 枚举用法详解 - 静默虚空 - 博客园 http://www.cnblogs.com/jingmoxukong/p/6098351.html
枚举类具有如下特性:
枚举类也是一种特殊形式的Java类。
枚举类中声明的每一个枚举值代表枚举类的一个实例对象。
与java中的普通类一样,在声明枚举类时,也可以声明属性、方法和构造函数,但枚举类的构造函数必须为私有的(这点不难理解)。
枚举类也可以实现接口、或继承抽象类。
JDK5中扩展了swith语句,它除了可以接收int, byte, char, short外,还可以接收一个枚举类型。
若枚举类只有一个枚举值,则可以当作单态设计模式使用。
package cn.itcast.enumeration; import org.junit.Test; public class Demo1 { enum Grade{ A("100-90"),B("89-80"),c("79-70"),D("69-60"),E("59-0");//相当于Object private String value; private Grade(String value){ this.value =value; } public String GetValue(){ return this.value +" "+ this.name(); } } @Test public void test1() { Print(Grade.A); //会输出 100-90 A } private void Print(Grade g){ String value= g.GetValue(); System.out.println(value); } }
=============
带抽象方法的枚举:
可以在里面定义抽象方法
不过写的方法看起来有点傻,暂时看不出优点,也不是类似继承的增强,
enum 是public static final的 enum又是可以定义抽象方法 感觉有矛盾
package cn.itcast.enumeration; import org.junit.Test; public class Demo1 { enum Grade { A("100-90") { public String GetLocaleValue() { return "成绩优秀"; } }, B("89-80") { public String GetLocaleValue() { return "成绩良"; } }, c("79-70") { public String GetLocaleValue() { return "成绩一般"; } }, D("69-60") { public String GetLocaleValue() { return "成绩及格"; } }, E("59-0") { public String GetLocaleValue() { return "成绩差"; } };// 相当于Object private String value; private Grade(String value) { this.value = value; } public String GetValue() { return this.value + " " + this.name(); } public abstract String GetLocaleValue();//不可以带body部分的{} } @Test public void test1() { Print(Grade.A); // 会输出 100-90 A } private void Print(Grade g) { String value = g.GetValue(); System.out.println(value); System.out.println(g.GetLocaleValue()); } }
带抽象方法的枚举
------------推荐两篇不错博客
java基础加强--实现带有抽象方法的枚举 - 时间挤挤 - 博客频道 - CSDN.NET http://blog.csdn.net/congwiny/article/details/18894641
Java 枚举用法详解 - 静默虚空 - 博客园 http://www.cnblogs.com/jingmoxukong/p/6098351.html
相关文章推荐
- c#枚举(Enum)的用法及遍历方法
- 带抽象方法的枚举
- c#枚举(Enum)的用法及遍历方法
- C# 枚举基本用法及扩展方法
- 抽象方法、抽象类的用法
- c#枚举的用法及遍历方法
- (十六)Core Java 枚举的使用(基本介绍,构造方法枚举,抽象方法枚举) (113)
- 带抽象方法的枚举
- 枚举方法在swtch中的用法
- Java枚举抽象方法实战
- 22-带抽象方法的枚举
- JDK1.5新特性之枚举中的构造函数及抽象方法
- 枚举中含有抽象方法
- PHP中抽象方法、抽象类和接口的用法
- 带抽象方法的枚举
- 带抽象方法的枚举
- JDK5.0以上:一个枚举也可以有构造函数,字段和方法,带抽象方法的枚举
- 带构造方法和抽象方法的枚举
- JAVA进阶之旅(一)——增强for循环,基本数据类型的自动拆箱与装箱,享元设计模式,枚举的概述,枚举的应用,枚举的构造方法,枚举的抽象方法
- PHP中抽象方法、抽象类和接口的用法