V tomto tutoriále sa dozviete, prečo nie je možné dedenie tried enum. Naučíte sa tiež implementovať rozhrania v triede enum.
Predtým, ako sa naučíte tento návod, nezabudnite vedieť o
- Java enums
- Java dedičstvo
- Rozhrania Java
Dedenie triedy z triedy enum
V Jave sú triedy enum final
predvolene. Preto z nej nemôžeme dediť iné triedy. Napríklad,
enum A ( // enum constants // fields and methods ) class B extends A ( public static void main(String() args) ( // statements ) ) # Error: cannot inherit from final A
Dedenie triedy enum z inej triedy
V jazyku Java nemôžeme rozšíriť triedy enum. Je to preto, že všetky enumy v Jave sú zdedené java.lang.Enum
. A rozšírenie viacerých tried (viacnásobné dedičstvo) nie je v Jave povolené.
Napríklad,
class A ( // class body ) enum B extends A ( // class body )
Toto vygeneruje chybu.
Java Enum a rozhranie
Ako sme sa dozvedeli, nemôžeme dediť triedy enum v Jave. Triedy enum však môžu implementovať rozhrania.
Príklad: implementačné rozhranie enum
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(); ) )
Výkon
Veľkosť je STREDNÁ
Vo vyššie uvedenom príklade sme vytvorili triedu enum Veľkosť. Táto trieda implementuje rozhranie Pizza.
Pretože implementujeme rozhranie, poskytli sme implementáciu abstraktnej metódy displaySize()
vo vnútri triedy enum.