В този урок ще научите защо наследяването на 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.