Enum является классом со всеми свойствами финального, у которого имеются поля, объявленные по умолчанию как final и экземпляры, также финальные. Им нельзя расширять классы, но с его помощью можно реализовывать интерфейсы.
Перечисление Enum является сравнимым (Comparable) и сериализируемым (Serializable).
В Enum задаётся набор определённых значений. Все они неявно, по умолчанию определены как public и static, и изменить это невозможно. Для перечислений действуют все законы static инициализации.
Каждый экземпляр, хранящийся в Enum, имеет свойства name (название конкретного элемента) и ordinal (номер этого элемента). Также у них имеются следующие методы:
· values – выдаёт список входящих в enum констант;
· valueof – возвращает значение константы по её названию.
Финализация Enum запрещена, клонирование тоже невозможно.