1.枚举类
在某些情况下, 一个类的对象是有限而且固定的(例如:季节类, 行星类),
这种实例有限而且固定的类, 在 Java 中被称为枚举类
手动实现枚举类:
1. private 构造器
2. 把这个类的所有可能实例都使用 public static final 修饰
3.提供一个静态方法根据给定的特定参数返回相应的实例
2.枚举类和普通类的区别
JDK 1.5 新增的 enum 关键字用于定义枚举类
枚举类和普通类的区别:
1.使用 enum 定义的枚举类默认继承了 java.lang.Enum 类
2.枚举类的构造器只能使用 private 访问控制符
3.枚举类的所有实例必须在枚举类中显式列出(, 分隔 ; 结尾). 列出的实例系统会自动添加 4.public static final 修饰
5.所有的枚举类都提供了一个 values 方法, 该方法可以很方便地遍历所有的枚举值
2.Enum的定义
/**
* 枚举类型:(jdk1.5以后出现的类型)
*/
enum Score{
A,B,C,D,E;
}
3.带有构造方法的枚举
/**
* 枚举类型:(jdk1.5以后出现的类型)
* A (100-90) B(89-80) C(79-70) D(69-60) E(59-0)
*/
enum Score{
A("100-90"),B("89-80"),C("79-70"),D("69-60"),E("59-0");
private String result;//分数段
//private Score(){};
/**
* 有参数的构造方法
*/
private Score(String result){
this.result = result;
}
public String getResult(){
return result;
}
}
4.得到枚举值所有的数值
/**
* 得到枚举中所有值:每个枚举类型都有一个values()方法
*/
Score[] arr =Score.values()
for (Score score : arr) {
System.out.println(score);
}
5.测试枚举的使用
/**
* Created by bailing on 2017/8/4.
*/
public class Demo2 {
public static void main(String[] args) {
testGenderMthod(Gender.MALE);
}
public static void testGenderMthod(Gender g){
System.out.println(g.getInfo());
g.speak();
}
}
//定义枚举
enum Gender{
MALE("男"){
@Override
public void speak() {
System.out.println("男人说");
}
}, FAMILE("女"){
@Override
public void speak() {
System.out.println("女人说");
}
};
//成员遍历
private String info;
//有参数的构造方法
private Gender(String info){
this.info = info;
}
//成员方法
public String getInfo() {
return info;
}
//抽象方法
//枚举类可以声明抽象方法,但是要有具体的枚举值去实现
public abstract void speak();
}