JAVA补强系列======枚举
2014-09-03 23:33
162 查看
-------枚举一---------------------------------------------------------------------------------------------------------------------------------------------------------
注意:
1】构造函数不能为public,只能是private,如果公有的话,就会出现可以new出来,不符合枚举初衷
2】理解:所谓的枚举就是枚举的类的每个私有对象,原理在enum1中已经很好的体现
-------枚举二---------------------------------------------------------------------------------------------------------------------------------------------------------
枚举讲白就是类的对象,没有什么复杂的说法
-------枚举三---------------------------------------------------------------------------------------------------------------------------------------------------------
最强版本,枚举对象如何封装更多信息:属性,以及方法
-------枚举四---------------------------------------------------------------------------------------------------------------------------------------------------------
枚举类的常用方法:
枚举类是有父类的,枚举类的父类就是枚举,它有一些常用的方法,比如valueoft()转成枚举对象, name()得到枚举名称,values,得到枚举对象数组
理论补充
枚举类具有如下特性:
枚举类也是一种特殊形式的Java类。
枚举类中声明的每一个枚举值代表枚举类的一个实例对象。
与java中的普通类一样,在声明枚举类时,也可以声明属性、方法和构造函数,但枚举类的构造函数必须为私有的(这点不难理解)。
枚举类也可以实现接口、或继承抽象类。
JDK5中扩展了swith语句,它除了可以接收int, byte, char, short外,还可以接收一个枚举类型。
若枚举类只有一个枚举值,则可以当作单态设计模式使用。
注意:
1】构造函数不能为public,只能是private,如果公有的话,就会出现可以new出来,不符合枚举初衷
2】理解:所谓的枚举就是枚举的类的每个私有对象,原理在enum1中已经很好的体现
/** * 枚举 enum * * 原理:一些方法在运行时,<strong><span style="color:#ff0000;">它需要的数据不能是任意的,而必须是一定范围内的值</span></strong>,比如礼拜 * * 下面就是枚举最简单的应用举例,以及枚举等同于的类,功能一样 * */ public class Enum01 { public static void main(String[] args) { Student student = new Student(); student.setGrade(Grade.A); } } class Student{ private String name; private Grade grade; public String getName() { return name; } public void setName(String name) { this.name = name; } public Grade getGrade() { return grade; } public void setGrade(Grade grade) { this.grade = grade; } } // <span style="color:#ff0000;">enum相当于定义了一个类(下面的GradeClass类一样功能),enum就是枚举</span> enum Grade { A, B, C, D, E;//相当于Grade的对象 } /* class GradeClass { // 私有构造方法就不能new private GradeClass() { } public static GradeClass A = new GradeClass(); public static GradeClass B = new GradeClass(); public static GradeClass C = new GradeClass(); public static GradeClass D = new GradeClass(); } */
-------枚举二---------------------------------------------------------------------------------------------------------------------------------------------------------
枚举讲白就是类的对象,没有什么复杂的说法
package com.sysweal.demo02; /** * enum:封装更复杂的信息 * 在设计枚举的时候,要求可能比前面我们的简单的成员更为复杂,设计如下: * * 使用:<span style="color:#ff0000;"><strong>如何让枚举封装更多信息,如何让枚举对象拥有自己的属性</strong></span> */ public class Enum02 { public static void main(String[] args) { Student2 stu = new Student2(); stu.setGrade2(Grade2.A); //取得枚举中的值 String value = stu.getGrade2().getValue(); System.out.println(value); } } class Student2{ private Grade2 grade2; public Grade2 getGrade2() { return grade2; } public void setGrade2(Grade2 grade2) { this.grade2 = grade2; } }
//这里必须注意把枚举对象放在格式的最上面,下面再声明属性和构造函数,不然会报错 enum Grade2 { A("100-90"), B("89-80"), C("79-70"); private String value; private Grade2(String value){ this.value = value; } public String getValue() { return value; } }
-------枚举三---------------------------------------------------------------------------------------------------------------------------------------------------------
最强版本,枚举对象如何封装更多信息:属性,以及方法
package com.sysweal.demo02; /** * enum1介绍了简单的枚举,enum2介绍了枚举的成员变量 * * enum3:枚举的方法 * */ public class Enum03 { public static void main(String[] args) { Student3 stu = new Student3(); stu.setGrade3(Grade3.A); String str = stu.getGrade3().toLocaleString(); System.out.println(str); } } class Student3 { private Grade3 grade3; public Grade3 getGrade3() { return grade3; } public void setGrade3(Grade3 grade3) { this.grade3 = grade3; } } enum Grade3 { A("100-90") { @Override public String toLocaleString() { return "优秀"; } }, B("89-80") { @Override public String toLocaleString() { return "良好"; } }, C("79-70") { @Override public String toLocaleString() { return "及格"; } }; private String value; private Grade3(String value) { this.value = value; } public String getValue() { return value; } // 将方法写成抽象方法,这里枚举对象new出来的时候就必须实现 public abstract String toLocaleString(); }
-------枚举四---------------------------------------------------------------------------------------------------------------------------------------------------------
枚举类的常用方法:
枚举类是有父类的,枚举类的父类就是枚举,它有一些常用的方法,比如valueoft()转成枚举对象, name()得到枚举名称,values,得到枚举对象数组
public class Enum03 { public static void main(String[] args) { Student3 stu = new Student3(); stu.setGrade3(Grade3.A); String str = stu.getGrade3().toLocaleString(); System.out.println(str); System.out.println(stu.getGrade3().B.name()); } public void test(){ //枚举类常用方法 String name = "B"; Grade3 g = Grade3.valueOf(Grade3.class, name); //values(),方法返回枚举类的所有对象 Grade3 gs[] = Grade3.values(); //取得枚举的对象的名字 String nameXXX = Grade3.A.name(); } }
理论补充
枚举类具有如下特性:
枚举类也是一种特殊形式的Java类。
枚举类中声明的每一个枚举值代表枚举类的一个实例对象。
与java中的普通类一样,在声明枚举类时,也可以声明属性、方法和构造函数,但枚举类的构造函数必须为私有的(这点不难理解)。
枚举类也可以实现接口、或继承抽象类。
JDK5中扩展了swith语句,它除了可以接收int, byte, char, short外,还可以接收一个枚举类型。
若枚举类只有一个枚举值,则可以当作单态设计模式使用。
相关文章推荐
- JAVA补强系列======反射二
- Java学习系列(二十二)Java面向对象之枚举详解
- JAVA补强系列======可变参数
- 枚举系列 求N!所产生的数后面有多少个0 java版
- 自学Java系列 笔记3 枚举、注释
- Java语法糖系列之枚举类型
- C++程序员学Java系列之二六:数据结构之枚举(Enumeration)
- 枚举系列 除法 java版
- Java系列(十三)__Java新特性(泛型、枚举、Annotation)
- Java系列(十三)__Java新特性(泛型、枚举、Annotation)
- 枚举系列 数字统计 java版
- java夯实基础系列:枚举
- 枚举系列 百钱买鸡 Java版
- JAVA补强系列======反射一
- Java基础系列:(2)关于枚举的简单总结
- 枚举系列 最大乘积 java版
- 枚举系列 分数拆分 java版
- Java高级系列——枚举(Enums)
- 读mingjava io系列文章有感
- JAVA/JSP学习系列之十一(简单的“抓网页”代码)