I denne vejledning lærer du om, hvorfor arv af enumklasser ikke er mulig. Du lærer også at implementere grænseflader i en enum-klasse.
Før du lærer denne vejledning, skal du sørge for at vide om
- Java enums
- Java-arv
- Java-grænseflader
Arve en klasse fra en enum-klasse
I Java er enumklasser final
som standard. Derfor kan vi ikke arve andre klasser fra det. For eksempel,
enum A ( // enum constants // fields and methods ) class B extends A ( public static void main(String() args) ( // statements ) ) # Error: cannot inherit from final A
Arve en enum-klasse fra en anden klasse
Vi kan ikke udvide enumklasser i Java. Det er fordi alle enums i Java arves fra java.lang.Enum
. Og at udvide flere klasser (flere arv) er ikke tilladt i Java.
For eksempel,
class A ( // class body ) enum B extends A ( // class body )
Dette vil generere en fejl.
Java Enum og interface
Som vi har lært, kan vi ikke arve enumklasser i Java. Dog kan enumklasser implementere grænseflader.
Eksempel: enum implementeringsgrænseflade
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(); ) )
Produktion
Størrelsen er MEDIUM
I ovenstående eksempel har vi oprettet en enum klasse størrelse. Denne klasse implementerer Pizza-grænsefladen.
Da vi implementerer en grænseflade, har vi leveret en implementering af den abstrakte metode displaySize()
inden for enum-klassen.