В этом руководстве вы узнаете, почему наследование классов enum невозможно. Вы также научитесь реализовывать интерфейсы в классе enum.
Прежде чем изучать это руководство, обязательно узнайте о
- Перечисления Java
- Наследование Java
- Java-интерфейсы
Наследование класса от класса перечисления
В Java final
по умолчанию используются классы перечисления . Следовательно, мы не можем наследовать от него другие классы. Например,
enum A ( // enum constants // fields and methods ) class B extends A ( public static void main(String() args) ( // statements ) ) # Error: cannot inherit from final A
Наследование класса enum от другого класса
Мы не можем расширять классы enum в Java. Это потому, что все перечисления в Java унаследованы от java.lang.Enum
. А расширение нескольких классов (множественное наследование) в Java запрещено.
Например,
class A ( // class body ) enum B extends A ( // class body )
Это вызовет ошибку.
Java Enum и интерфейс
Как мы узнали, мы не можем наследовать классы перечисления в Java. Однако классы перечисления могут реализовывать интерфейсы.
Пример: enum, реализующий интерфейс
interface Pizza ( public void displaySize(); ) enum Size implements Pizza ( SMALL, MEDIUM, LARGE, EXTRALARGE; public void displaySize() ( System.out.println("The size is " + this); ) ) class Main ( public static void main(String() args) ( Size.MEDIUM.displaySIze(); ) )
Вывод
Размер СРЕДНИЙ
В приведенном выше примере мы создали перечисляемый класс Size. Этот класс реализует интерфейс Pizza.
Поскольку мы реализуем интерфейс, мы предоставили реализацию абстрактного метода displaySize()
внутри класса enum.