2.枚举类(Enum)

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();
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容