V tomto kurzu se dozvíte, proč není dědičnost tříd výčtu možná. Naučíte se také implementovat rozhraní ve třídě výčtu.
Než se naučíte tento návod, nezapomeňte o něm vědět
- Výčet Java
- Dědičnost Java
- Rozhraní Java
Zdědění třídy ze třídy výčtu
V Javě jsou třídy výčtu final
ve výchozím nastavení. Z toho tedy nemůžeme zdědit další třídy. Napří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
Zdědění výčtu třídy z jiné třídy
V Javě nemůžeme rozšířit třídy výčtu. Je to proto, že všechny výčty v Javě jsou zděděny java.lang.Enum
. A rozšíření více tříd (vícenásobná dědičnost) není v Javě povoleno.
Například,
class A ( // class body ) enum B extends A ( // class body )
Tím se vygeneruje chyba.
Výčet a rozhraní Java
Jak jsme se dozvěděli, v Javě nemůžeme dědit třídy výčtu. Třídy výčtu však mohou implementovat rozhraní.
Příklad: implementační rozhraní výčtu
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ýstup
Velikost je STŘEDNÍ
Ve výše uvedeném příkladu jsme vytvořili třídu výčtu Velikost. Tato třída implementuje rozhraní Pizza.
Protože implementujeme rozhraní, poskytli jsme implementaci abstraktní metody displaySize()
uvnitř třídy enum.