在Java中,枚舉類型是一種特殊的類,它定義了一組常量。枚舉類型可以用于實例化一個或多個枚舉對象,也可以繼承自其他類。
// 定義一個枚舉類型 public enum Color { RED, GREEN, BLUE; } // 實例化枚舉對象 Color c1 = Color.RED; Color c2 = Color.GREEN; Color c3 = Color.BLUE;
枚舉類型的實例化很簡單,只需要使用枚舉類型的名稱即可。枚舉對象和常量一樣,不可修改。然而,Java允許枚舉類型繼承自其他類,這是一種非常有用的功能。
// 定義一個抽象類 public abstract class Shape { public abstract double getArea(); } // 枚舉類型繼承自抽象類 public enum ShapeType extends Shape { CIRCLE(3.14), SQUARE(1.0), TRIANGLE(0.5); private double value; ShapeType(double value) { this.value = value; } public double getValue() { return value; } public double getArea() { switch (this) { case CIRCLE: return getValue() * 2 * 2; case SQUARE: return getValue() * getValue(); case TRIANGLE: return getValue() * 3 * 4; default: return 0; } } } // 實例化枚舉對象 double circleArea = ShapeType.CIRCLE.getArea(); double squareArea = ShapeType.SQUARE.getArea(); double triangleArea = ShapeType.TRIANGLE.getArea();
在這個例子中,我們定義了一個抽象類Shape,它有一個抽象方法getArea()。接著,我們定義了一個枚舉類型ShapeType,它繼承自Shape,并在枚舉值中定義了一些常量。每個常量都有一個value屬性,表示這個形狀的某個特定屬性(比如圓形的半徑,正方形的邊長等)。我們還覆蓋了Shape類的getArea()方法,在其中根據不同的枚舉值,計算出這種形狀的面積。
需要注意的是,在枚舉類型中實現繼承必須在枚舉類型的第一行聲明它繼承自其他類或接口。