Dědičnost a rozhraní Java enum

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 finalve 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.

Zajímavé články...