列挙型は固定値の集合であり継承はできませんが、メンバメソッドや変数の定義は可能です。インターフェイスはメソッドと定数のセットを定義します。これらはインスタンス化できませんが、クラスによって実装できます。インターフェイスのメソッドは宣言できるだけで実装できませんが、定数は定義できます。
Java では、列挙型とインターフェイスはどちらも非常に便利な言語機能ですが、両者の間には違いがあります。明らかな違いがあります。
表 1: 列挙型とインターフェイスの違い
機能 | 列挙型 | インターフェース |
---|---|---|
値のタイプ | 固定および制限付き | 変数、必要に応じて追加可能 |
継承 | 継承不可 | 複数のクラスで実装可能 |
メンバー メソッド | 定義可能 | 宣言のみ可能、実装不可 |
定数を定義可能 | 定数を定義可能およびメソッド | |
#インスタンス化できません | インスタンス化できません |
public enum DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
public interface Shape { double getArea(); double getPerimeter(); }
public enum ShapeType implements Shape { CIRCLE { @Override public double getArea() { return Math.PI * radius * radius; } @Override public double getPerimeter() { return 2 * Math.PI * radius; } }, RECTANGLE { @Override public double getArea() { return length * width; } @Override public double getPerimeter() { return 2 * (length + width); } } }
Shape インターフェイスを実装します。
CIRCLE と
RECTANGLE は列挙定数で、それぞれ円と四角形を表します。これらの列挙定数は、
Shape インターフェイスのメソッドを実装し、円と四角形に特定の動作を提供します。
以上がJava の列挙型とインターフェイスの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。