Tässä opetusohjelmassa opit, miksi enum-luokkien periminen ei ole mahdollista. Opit myös toteuttamaan rajapintoja enum-luokassa.
Ennen kuin opit tämän opetusohjelman, muista tietää siitä
- Java-keskustelut
- Java-perintö
- Java-käyttöliittymät
Luokan periminen enum-luokasta
Javassa enum-luokat ovat final
oletusarvoisesti. Siksi emme voi periä muita luokkia siitä. Esimerkiksi,
enum A ( // enum constants // fields and methods ) class B extends A ( public static void main(String() args) ( // statements ) ) # Error: cannot inherit from final A
Enum-luokan periminen toisesta luokasta
Emme voi laajentaa Java-luokkia. Tämä johtuu siitä, että kaikki Java-keskustelut on peritty java.lang.Enum
. Ja useiden luokkien laajentaminen (useita perintöjä) ei ole sallittua Javassa.
Esimerkiksi,
class A ( // class body ) enum B extends A ( // class body )
Tämä aiheuttaa virheen.
Java Enum ja käyttöliittymä
Kuten olemme oppineet, emme voi periä Java-luokkia. Enum-luokat voivat kuitenkin toteuttaa rajapintoja.
Esimerkki: enum-käyttöliittymä
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(); ) )
Tuotos
Koko on MEDIUM
Yllä olevassa esimerkissä olemme luoneet enum-luokan Koko. Tämä luokka toteuttaa Pizza-käyttöliittymän.
Koska olemme toteuttamassa käyttöliittymää, olemme toimittaneet abstraktin menetelmän toteutuksen displaySize()
enum-luokan sisällä.