Наследяване и интерфейс на Java enum

В този урок ще научите защо наследяването на enum класове не е възможно. Също така ще се научите да прилагате интерфейси в enum клас.

Преди да научите този урок, не забравяйте да знаете за

  • Java изброявания
  • Наследяване на Java
  • Java интерфейси

Наследяване на клас от enum клас

В Java класовете enum са 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 и интерфейс

Както разбрахме, не можем да наследяваме enum класове в Java. Класовете enum обаче могат да реализират интерфейси.

Пример: 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(); ) ) 

Изход

 Размерът е СРЕДЕН 

В горния пример създадохме enum клас Size. Този клас изпълнява интерфейса Pizza.

Тъй като внедряваме интерфейс, осигурихме реализация на абстрактния метод displaySize()в класа enum.

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