工作生活

7.Java----枚举

2019-07-15  本文已影响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();
}

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

上一篇下一篇

猜你喜欢

热点阅读