W tym samouczku dowiesz się, dlaczego dziedziczenie klas wyliczeniowych nie jest możliwe. Dowiesz się również, jak implementować interfejsy w klasie wyliczeniowej.
Zanim nauczysz się tego samouczka, upewnij się, że wiesz o
- Wyliczenia Java
- Dziedziczenie Java
- Interfejsy Java
Dziedziczenie klasy z klasy wyliczenia
W Javie klasy wyliczeniowe są final
domyślnie. Dlatego nie możemy dziedziczyć po nim innych klas. Na przykład,
enum A ( // enum constants // fields and methods ) class B extends A ( public static void main(String() args) ( // statements ) ) # Error: cannot inherit from final A
Dziedziczenie klasy wyliczenia z innej klasy
Nie możemy rozszerzać klas wyliczeniowych w Javie. Dzieje się tak, ponieważ wszystkie wyliczenia w Javie są dziedziczone z java.lang.Enum
. Rozszerzanie wielu klas (wielokrotne dziedziczenie) nie jest dozwolone w Javie.
Na przykład,
class A ( // class body ) enum B extends A ( // class body )
Spowoduje to błąd.
Wyliczenie i interfejs Java
Jak się dowiedzieliśmy, w Javie nie możemy dziedziczyć klas wyliczeniowych. Jednak klasy wyliczeniowe mogą implementować interfejsy.
Przykład: interfejs implementujący 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(); ) )
Wynik
Rozmiar jest ŚREDNI
W powyższym przykładzie utworzyliśmy klasę wyliczenia Size. Ta klasa implementuje interfejs Pizza.
Ponieważ implementujemy interfejs, udostępniliśmy implementację metody abstrakcyjnej displaySize()
wewnątrz klasy enum.