Trong hướng dẫn này, bạn sẽ tìm hiểu về lý do tại sao không thể kế thừa các lớp enum. Bạn cũng sẽ học cách triển khai các giao diện trong một lớp enum.
Trước khi bạn tìm hiểu hướng dẫn này, hãy đảm bảo bạn biết về
- Java enums
- Kế thừa Java
- Giao diện Java
Kế thừa một Lớp từ một Lớp enum
Trong Java, các lớp enum là final
theo mặc định. Do đó, chúng ta không thể kế thừa các lớp khác từ nó. Ví dụ,
enum A ( // enum constants // fields and methods ) class B extends A ( public static void main(String() args) ( // statements ) ) # Error: cannot inherit from final A
Kế thừa một Lớp enum từ Lớp khác
Chúng tôi không thể mở rộng các lớp enum trong Java. Đó là vì tất cả các enum trong Java đều được kế thừa từ java.lang.Enum
. Và việc mở rộng nhiều lớp (đa kế thừa) không được phép trong Java.
Ví dụ,
class A ( // class body ) enum B extends A ( // class body )
Điều này sẽ tạo ra một lỗi.
Java Enum và giao diện
Như chúng ta đã học, chúng ta không thể kế thừa các lớp enum trong Java. Tuy nhiên, các lớp enum có thể triển khai các giao diện.
Ví dụ: giao diện triển khai 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(); ) )
Đầu ra
Kích thước là TRUNG BÌNH
Trong ví dụ trên, chúng ta đã tạo một Kích thước lớp enum. Lớp này đang thực hiện giao diện Pizza.
Vì chúng tôi đang triển khai một giao diện, chúng tôi đã cung cấp một triển khai của phương thức trừu tượng displaySize()
bên trong lớp enum.