Ebben az oktatóanyagban megtudhatja, miért nem lehetséges az enum osztályok öröklése. Megtanulja az interfészek megvalósítását egy enum osztályban is.
Mielőtt elsajátítaná ezt az oktatóanyagot, győződjön meg róla, hogy tud róla
- Java enums
- Java öröklés
- Java interfészek
Osztály öröklése az enum osztályból
A Java- final
ban alapértelmezés szerint az enum osztályok vannak . Ezért nem örökölhetünk belőle más osztályokat. Például,
enum A ( // enum constants // fields and methods ) class B extends A ( public static void main(String() args) ( // statements ) ) # Error: cannot inherit from final A
Egy enum osztály öröklése egy másik osztályból
Nem tudjuk meghosszabbítani az enum osztályokat a Java-ban. Ez azért van, mert az összes Java-enum öröklődik java.lang.Enum
. És több osztály kiterjesztése (többszörös öröklés) nem megengedett a Java-ban.
Például,
class A ( // class body ) enum B extends A ( // class body )
Ez hibát generál.
Java Enum és interfész
Mint megtudtuk, nem örökölhetjük az enum osztályokat a Java-ban. Az enum osztályok azonban megvalósíthatnak interfészeket.
Példa: enum interfész
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(); ) )
Kimenet
A méret közepes
A fenti példában létrehoztunk egy enum osztály Size-ot. Ez az osztály a Pizza felületet valósítja meg.
Mivel egy interfészt displaySize()
valósítunk meg , az absztrakt módszer megvalósítását az enum osztályon belül biztosítottuk.