În acest tutorial, veți afla de ce moștenirea claselor enum nu este posibilă. De asemenea, veți învăța să implementați interfețe într-o clasă enum.
Înainte de a învăța acest tutorial, asigurați-vă că știți despre
- Enumeri Java
- Moștenirea Java
- Interfețe Java
Moștenirea unei clase dintr-o clasă enum
În Java, clasele enum sunt final
implicite. Prin urmare, nu putem moșteni alte clase din ea. De exemplu,
enum A ( // enum constants // fields and methods ) class B extends A ( public static void main(String() args) ( // statements ) ) # Error: cannot inherit from final A
Moștenirea unei clase enum de la altă clasă
Nu putem extinde clasele enum în Java. Acest lucru se datorează faptului că toate enumerările din Java sunt moștenite de la java.lang.Enum
. Și extinderea mai multor clase (moștenire multiplă) nu este permisă în Java.
De exemplu,
class A ( // class body ) enum B extends A ( // class body )
Aceasta va genera o eroare.
Java Enum și interfață
După cum am învățat, nu putem moșteni clase enum în Java. Cu toate acestea, clasele enum pot implementa interfețe.
Exemplu: interfață de implementare 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(); ) )
Ieșire
Dimensiunea este MEDIE
În exemplul de mai sus, am creat o clasă enum Size. Această clasă implementează interfața Pizza.
Deoarece implementăm o interfață, am oferit o implementare a metodei abstracte displaySize()
în clasa enum.