美文网首页
Java 枚举与类的异同

Java 枚举与类的异同

作者: 夜阑w | 来源:发表于2019-02-28 21:24 被阅读0次

An enum type is a special data type that enables for a variable to be a set of predefined constants.

相同点

  • 枚举类是一种特殊的类,它和普通的类一样,有自己的成员变量、成员方法、构造器。

不同点

  1. 枚举的构造方法私有,构造器只能使用 private 访问修饰符,所以无法从外部调用构造器,构造器只在构造枚举值时被调用。也就是说枚举类不给外界实例化的机会,只能它自己实例化,而一个枚举类的所有实例就只有枚举前面分号前的那几个,其他地方不允许创建。

  2. 枚举类的所有实例(枚举值)必须在枚举类的第一行显式地列出,否则这个枚举类将永远不能产生实例。列出这些实例(枚举值)时,系统会自动添加 public static final 修饰,无需程序员显式添加。

    关于以上两点的一个例子:

public enum Color {
    GREEN,RED,BLUE,GRAY;
}

如果翻译为普通类大致为:

public class Color {
    public static final Color GREEN = new Color(),
            RED = new Color(),
            BLUE = new Color(),
            GRAY = new Color();

    private Color() {
    }
}
  1. 枚举允许为其定义抽象方法,如果枚举里声明一个抽象方法,前面的每个实例就必须要实现该方法。注意abstract关键字对于枚举类来说是不需要的。
public enum Color {
    GREEN {
        @Override
        void draw() {
        }
    },RED {
        @Override
        void draw() {
        }
    },BLUE {
        @Override
        void draw() {
        }
    },GRAY {
        @Override
        void draw() {
        }
    };
    abstract void draw();
}
  1. 所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。但枚举可以实现接口。
public interface Behaviour {  
     void print();  
     String getInfo();  
}  

public enum Color implements Behaviour {
    RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);

    private String name;
    private int index;

    // 构造方法
    Color(String name, int index) {
        this.name = name;
        this.index = index;
    }

    @Override
    public void print() {
        System.out.println(this.index + ":" + this.name);
    }

    @Override
    public String getInfo() {
        return this.name;
    }
}

相关文章

  • Java 枚举与类的异同

    An enum type is a special data type that enables for a va...

  • Java枚举和类的异同

    了解了java结构中的类,变量,方法,那枚举是什么呢?枚举是一种特殊的类,它定义了一系列有关联的常量,代表一种特定...

  • 枚举类和类的异同

    枚举类和类的异同 相同之处 枚举类也是类,同样具有成员变量、成员方法、构造器public enum Week { ...

  • 枚举和类

    枚举和类的异同 相同点: 枚举类是一种特殊的类,它和普通的类一样,有自己的成员变量、成员方法、构造器。 枚举类也可...

  • 枚举和类的异同

    枚举是java 5新增了一个menu关键字(它与class、interface关键字的地位相同),用于定义枚举,枚...

  • 枚举和类的异同

    定义: 枚举是指一组固定常量组成合法值的类型 相同的地方枚举类也是类,同样具有成员变量、成员方法、构造器例如 也可...

  • 枚举学习

    java enum枚举类 enum(枚举)类介绍 **java枚举类是一组预定义常量的集合,使用enum关键字声明...

  • Java枚举

    Java中的每个枚举都是java.lang.Enum的final子类,枚举类中的每个枚举常量都是该枚举类的一个实例...

  • 2020-06-06Java 集合类对比总结

    【2020-06-06--02期】Java 集合类 提纲 ArrayList 与LinkedList 异同; Ha...

  • Java枚举类

    枚举其实是个特殊的 Java 类,创建枚举需用enum关键字,枚举类都是java.lang.Enum的子类,jav...

网友评论

      本文标题:Java 枚举与类的异同

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