7.Java----枚举

作者: _麻辣香锅不要辣 | 来源:发表于2019-07-15 16:27 被阅读0次

    1.定义

    枚举类型是一种特殊数据类型,能够为一个变量定义一组预定义的常量。变量必须等于为其预定义的值之一。

    枚举是特殊的类,可以拥有成员变量和方法。

    2.使用

    2.1在JDK1.5之前

    采用的是将构造方法改为private,再定义静态常量对象。

    class Person1{
        private  final String name;
        private  final int age;
    
        @Override
        public String toString() {
            return "Person1{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    
        private Person1(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public static final Person1 STUDENT = new Person1("student",18);
        public static final Person1 TEACHER = new Person1("teacher",26);
    }
    
    2.2JDK1.5之后

    使用enum关键字

    enum Person2{
    
        STUDENT("student",18),
        TEACHER("teacher",26);
    
        private  final String name;
        private  final int age;
    
    //    @Override
    //    public String toString() {
    //        return "Person1{" +
    //                "name='" + name + '\'' +
    //                ", age=" + age +
    //                '}';
    //    }
    
         Person2(String name, int age) {
            this.name = name;
            this.age = age;
        }
    }
    

    1.5之前的就是一个普通的类,继承自Object,所以打印的时候输出的是地址值,需要重写toString()方法,1.5之后使用的是enum关键字,此时继承自Enum类,Enum中重写了toString(),打印的是枚举的变量名。

    3.实现接口

    enum Person3 implements MyInterface{
        STUDENT("student",18){
            @Override
            public void show() {
                System.out.println("i am student");
            }
        },
        TEACHER("teacher",26){
            @Override
            public void show() {
                System.out.println("i am teacher");
            }
        };
        private  final String name;
        private  final int age;
        Person3(String name, int age) {
            this.name = name;
            this.age = age;
        }
        @Override
        public void show() {
            System.out.println(this.name);
            System.out.println("i am person3");
        }
    }
    
    interface MyInterface{
        void show();
    }
    

    除了正常的实现接口,并实现接口中的方法以外,还可以在枚举对象里为每个对象都实现各自的接口。

    相关文章

      网友评论

        本文标题:7.Java----枚举

        本文链接:https://www.haomeiwen.com/subject/xsvdhctx.html