U ovom ćete tutorialu naučiti zašto nasljeđivanje enum klasa nije moguće. Također ćete naučiti implementirati sučelja u enum klasi.
Prije nego što naučite ovaj tutorial, obavezno saznajte više o njemu
- Java nabrajanja
- Nasljeđivanje Java
- Java sučelja
Nasljeđivanje klase iz enum klase
U Javi su enum klase final
prema zadanim postavkama. Stoga iz njega ne možemo naslijediti druge klase. Na primjer,
enum A ( // enum constants // fields and methods ) class B extends A ( public static void main(String() args) ( // statements ) ) # Error: cannot inherit from final A
Nasljeđivanje enum klase iz druge klase
Ne možemo proširiti enum klase na Javi. To je zato što su svi enumi u Javi naslijeđeni od java.lang.Enum
. A proširivanje više klasa (višestruko nasljeđivanje) nije dopušteno u Javi.
Na primjer,
class A ( // class body ) enum B extends A ( // class body )
To će generirati pogrešku.
Java Enum i sučelje
Kao što smo naučili, ne možemo naslijediti enum klase u Javi. Međutim, enum klase mogu implementirati sučelja.
Primjer: sučelje koje implementira nabrajanje
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(); ) )
Izlaz
Veličina je SREDNJA
U gornjem primjeru stvorili smo enum klasu Size. Ova klasa implementira sučelje Pizza.
Budući da implementiramo sučelje, osigurali smo implementaciju apstraktne metode displaySize()
unutar enum klase.