Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Enum có thể extends class nào trong Java?

Không thể. Mọi enum trong Java đều ngầm kế thừa từ class java.lang.Enum. Vì Java không hỗ trợ đa kế thừa (multiple inheritance) cho class, nên enum không thể extends class nào khác.

Ví dụ báo lỗi

class Sample { }

enum Scooters extends Sample { // Compile error!
    HONDA, YAMAHA, SUZUKI
}
EnumExample.java:5: error: '{' expected
enum Scooters extends Sample{
    ^
EnumExample.java:5: error: ',', '}', or ';' expected
enum Scooters extends Sample{
    ^

Nhưng Enum CÓ THỂ implements Interface

interface Drivable {
    void drive();
}

enum Vehicle implements Drivable {
    CAR {
        public void drive() { System.out.println("Driving car"); }
    },
    BIKE {
        public void drive() { System.out.println("Riding bike"); }
    };
    // abstract method bắt buộc implement ở mỗi constant
    public abstract void drive();
}

Đặc điểm Enum

  • Kế thừa ngầm java.lang.Enum.
  • Có thể implements nhiều interface.
  • Mỗi constant (CAR, BIKE) là instance của enum type.
  • Có thể có field, method, constructor (private).
  • Không thể extends class khác, không thể bị extend (implicitly final).

Tóm tắt: Enum extends java.lang.Enum (tự động) + implements interfaces. Không extends class thường.