枚举 --java学习笔记

小明 2025-05-06 06:50:56 5

什么是枚举

���举是一种特殊类

格式:

修饰符 enum 枚举类名{

        名称1,名称2,...;        //枚举类的第一行必须罗列的是枚举对象的名字

        其他成员...

}

  • 枚举类的第一行只能罗列一些名称,这些名称都是常量,并且每个常量记住的都是枚举类的一个对象
  • 枚举类的构造器都是私有的(写不写都只能是私有的),因此,枚举类对外不能创建对象
  • 枚举都是最终类,不可以被继承
  • 枚举类中,从第二行开始,可以定义类的其他各种成员
  • 编译器为枚举类新增了几个方法,并且枚举类都是继承:java.lang.Enum类的,从enum类也会继承到一些方法
  • 枚举的应用场景:做信息标志和分类

    例:

    public enum A {
        A,B,C;  //罗列枚举对象的名字
        private String name;
        public void setName(String name) {
            this.name = name;
        }
        public void Myname(){
            System.out.println(this.name);
        }
    }
    public class Test {
        public static void main(String[] args) {
            A a = A.B;  //枚举类对象创建,使用罗列的枚举对象名字
            a.setName("小明");    //类方法正常使用
            a.Myname();
            //编译器为枚举类新增的和从enum类继承到的一些方法
            A[] as = A.values();    //拿到全部对象
            A a2 = A.valueOf("C");  //根据名字拿到对象
            System.out.println(a2.name());   //拿到对象名字 C
            System.out.println(a2.ordinal());   //拿到对象索引 2,也就是罗列名字时的顺序,从0开始
        }
    }

     

    抽象枚举

    也就是带有抽象方法的枚举类,需要在罗列对象名字时实现该抽象方法

    例:

    public enum B { //抽象枚举
        X{
            @Override   //实现抽象方法
            public void say() {
            }
        }
        ,Y("小明"){   //通过有参构造器赋初值
            @Override
            public void say() {
                System.out.println("我是"+getName());
            }
        };
        private String name;
        B() {
        }
        B(String name) {
            this.name = name;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public abstract void say(); //抽象方法
    }
    public class Test2 {
        public static void main(String[] args) {
            B b = B.Y;
            b.say();
        }
    }

     

The End
微信