I den här handledningen lär du dig varför det inte är möjligt att arva enumklasser. Du lär dig också att implementera gränssnitt i en enum-klass.
Innan du lär dig denna handledning, se till att veta om
- Java enums
- Java-arv
- Java-gränssnitt
Ärva en klass från en enum-klass
I Java är enumklasser som final
standard. Därför kan vi inte ärva andra klasser från det. Till exempel,
enum A ( // enum constants // fields and methods ) class B extends A ( public static void main(String() args) ( // statements ) ) # Error: cannot inherit from final A
Ärva en Enum-klass från en annan klass
Vi kan inte förlänga enumklasser i Java. Det beror på att alla enums i Java ärvs från java.lang.Enum
. Och att förlänga flera klasser (flera arv) är inte tillåtet i Java.
Till exempel,
class A ( // class body ) enum B extends A ( // class body )
Detta genererar ett fel.
Java Enum och gränssnitt
Som vi har lärt oss kan vi inte ärva enumklasser i Java. Emellertid kan enumklasser implementera gränssnitt.
Exempel: enum implementeringsgränssnitt
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
Storleken är MEDIUM
I exemplet ovan har vi skapat en Enum-klassstorlek. Denna klass implementerar Pizza-gränssnittet.
Eftersom vi implementerar ett gränssnitt har vi tillhandahållit en implementering av den abstrakta metoden displaySize()
inom enumklassen.