枚举

2019-04-1217:56:20

* 枚举
可以替代常量
在已知个数的情况下可以使用枚举
定义枚举 关键字 enum 构造方法不能有public
对象不能随意创建
构造方法不能在外部使用 不能new

和一个正常类相比区别
1.不能在类的外部实例化 只能在类内部定义
2.定义的对象都是public static final的
3.没有用abstract修饰却可以添加抽象方法
4.构造方法默认私有 不能用 public protected 修饰
public  enum  Direction {
    //枚举的对象直接类的对象直接创建,不需要new
    //如果枚举类中定义了抽象方法,就需要将抽象方法实现
    EAST("东"){  //// ---->相当创建一个对象----->"东"给string 赋值用
        @Override
        public void b() {  //重写b方法

        }
    },SOUTH("南"){
        @Override
        public void b() {

        }
    },WEST("西"){
        @Override
        public void b() {

        }
    },NORTH("北"){
        @Override
        public void b() {

        }
    };
    private String a; //可以定义变量

    Direction(String a) { //可以定义构造方法
        this.a = a;
    }

    public void show(){ //可以写方法
        System.out.println(a);
    }

    public abstract void b(); //定义抽象方法
}
public class Test {

    public static void main(String[] args) {
        System.out.println(Direction.EAST);
        Direction.WEST.show();
        //判断两个枚举是否相同
        Direction dir = Direction.EAST;
        System.out.println(dir == Direction.EAST);//判断枚举是否相同的方法
        System.out.println(dir.compareTo(Direction.WEST)); //枚举下标做差 为0是相同
        //---描述枚举
        System.out.println(dir.ordinal()); //枚举下标
        System.out.println(dir.name());//显示字符串

    }

    public static void showDirection(Direction dir) {
        System.out.println(dir);
    }

}

 

posted @ 2019-04-12 17:58  后天2333  阅读(217)  评论(0编辑  收藏  举报