各种语言中的 Enum
C, C++, Java 和 Python 中的 Enum
枚举类是很多编程语言中都有的设计. 它最明显的用途在于给一系列编程中概念相关的但逻辑上在同一层次的事物编号.
大多数编程语言从,枚举类的定义语法类似类, 也就是说它们都将枚举类看成是一个特殊的类。同时, 它们一般允许定义的枚举名称在作用范围内按照整型常量随意使用. 还提供了自定义编号的特性.
C
基本语法
enum 枚举类名{ |
如果需要自定义编号,
采用枚举名 = 整型常量表达式
的形式定义枚举名,
此时下一个枚举名的编号是整型常量表达式 + 1.
Java
在 Java 中,枚举类就是一种继承了 java.lang.Enum
,
实现了 java.lang.Comparable
的 final 类,
可以定义类能定义的属性和方法.
枚举类可以有构造方法,默认私有.
基本语法
enum 枚举类名{ |
注意啦,这里的枚举名们都可看作是枚举类的实例在初始化, 因此可以提供构造函数的参数.
常用的方法
- String toString()
- final String name()
static final int valueOf(String name)
- static String[] values()
- final int ordinal()
- final int compareTo(E o)
定义抽象方法
如果写抽象方法,枚举类的所有实例都必须实现抽象方法.
每个枚举名都是 Abstract枚举类名
的对象的引用,
因此可以通过在初始化参数后接内部类定义来实现抽象方法.
编译后,所有实例都是内部类.
Python
Python 语法更加直接,
枚举类就是一个继承了 enum.Enum
的类.
基本语法
class 枚举类名(enum.Enum): |
Todo
C++
C 语言的枚举类名是无范围修饰的,因此经常会出现枚举名撞车现象, 给 debug 带来无穷麻烦.
因此 C++ 添加了一些新的语法来避免这一切.
enum (class|struct) 枚举类名[:编号类型]{ |
另外增加了 using enum 枚举类名
来导入某个枚举类.
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment
GitalkValine