Java doc:
Конструктор для типа enum должен иметь частный или частный доступ к пакету.Он автоматически создает константы, которые определены в начале тела enum.Вы не можете вызвать конструктор enum самостоятельно.
Jonathan(10), GoldenDel(9), RedDel, Winesap(15), Cortland(8);
Каждый из них будет вызывать конструктор в начале (когда вы выполняете Apple ap;
) с ценой, указанной в скобках, не более того.
Enum также может иметь методы.Вы не ограничены простыми методами получения и установки.Вы также можете создавать методы, которые производят вычисления на основе значений полей константы перечисления.Если ваши поля не объявлены как окончательные, вы можете даже изменить значения полей (плохая практика, учитывая, что перечисления должны быть константами).
Экземпляры Enum являются "статическими" (т.е. ведут себя как статические переменные), но не являются неизменяемыми - , что является ответом на ваш вопрос .Изменение поля перечисления меняет его для всех (статическое).
Хорошей практикой является сделать ваши поля окончательными в перечислении и сделать их неизменяемыми.
private **final** int price;