Наследование и интерфейс перечисления Java

В этом руководстве вы узнаете, почему наследование классов 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.

Интересные статьи...