ホームページ  >  記事  >  Java  >  Java の列挙型とインターフェイスの違いは何ですか?

Java の列挙型とインターフェイスの違いは何ですか?

王林
王林オリジナル
2024-05-01 10:42:02315ブラウズ

列挙型は固定値の集合であり継承はできませんが、メンバメソッドや変数の定義は可能です。インターフェイスはメソッドと定数のセットを定義します。これらはインスタンス化できませんが、クラスによって実装できます。インターフェイスのメソッドは宣言できるだけで実装できませんが、定数は定義できます。

Java 枚举类型与接口之间的区别是什么?

Java 列挙型とインターフェイスの違い

Java では、列挙型とインターフェイスはどちらも非常に便利な言語機能ですが、両者の間には違いがあります。明らかな違いがあります。

列挙型

  • 列挙型は、限定された固定の値セットを表すために使用される特別なデータ型です。
  • 列挙型の各値は列挙定数と呼ばれます。
  • 列挙型は最終的なものであり、継承することはできません。

インターフェイス

  • インターフェイスは、メソッドと定数のセットを定義する参照型です。
  • インターフェイスはインスタンス化できず、クラスによってのみ実装できます。
  • インターフェイス内のメソッドは実装されず、宣言されるだけです。

表 1: 列挙型とインターフェイスの違い

##メンバー変数定数を定義可能定数を定義可能およびメソッド#Instantiation## 実際のケース
機能 列挙型 インターフェース
値のタイプ 固定および制限付き 変数、必要に応じて追加可能
継承 継承不可 複数のクラスで実装可能
メンバー メソッド 定義可能 宣言のみ可能、実装不可
#インスタンス化できません インスタンス化できません

列挙型の例

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);
        }
    }
}
この例では、ShapeType

列挙型は

Shape インターフェイスを実装します。 CIRCLERECTANGLE は列挙定数で、それぞれ円と四角形を表します。これらの列挙定数は、Shape インターフェイスのメソッドを実装し、円と四角形に特定の動作を提供します。

以上がJava の列挙型とインターフェイスの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。