V tej vadnici boste izvedeli, zakaj dedovanje razredov enum ni mogoče. Naučili se boste tudi izvajati vmesnike v enum razredu.
Preden se naučite te vadnice, se prepričajte o tem
- Java naštevanja
- Dedovanje Java
- Java vmesniki
Podedovanje razreda iz enum razreda
V Javi so final
privzeto razredi enum . Iz njega torej ne moremo podedovati drugih razredov. Na primer
enum A ( // enum constants // fields and methods ) class B extends A ( public static void main(String() args) ( // statements ) ) # Error: cannot inherit from final A
Podedovanje enum razreda iz drugega razreda
V Javi ne moremo razširiti razredov enum. To je zato, ker so vsi enumi v Javi podedovani od java.lang.Enum
. In razširitev več razredov (večkratno dedovanje) v Javi ni dovoljeno.
Na primer
class A ( // class body ) enum B extends A ( // class body )
To bo povzročilo napako.
Java Enum in vmesnik
Kot smo se naučili, v Javi ne moremo podedovati razredov enum. Vendar lahko razredi enum izvajajo vmesnike.
Primer: enum, ki izvaja vmesnik
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(); ) )
Izhod
Velikost je SREDNJA
V zgornjem primeru smo ustvarili enum razred Velikost. Ta razred izvaja vmesnik Pizza.
Ker izvajamo vmesnik, smo displaySize()
v razredu enum zagotovili izvedbo abstraktne metode .