Newer Version Available
インターフェース
インターフェースにより、コードで抽象化レイヤーを使用できます。インターフェースは、メソッドの特定の実装をメソッドの宣言から切り離します。これにより、1 つのメソッドをアプリケーションに基づいて別々に実装できます。
インターフェースの定義は、新しいクラスの定義に似ています。たとえば、ある企業が 2 種類の注文に対応しているとします。顧客からの注文と、従業員からの注文です。どちらも注文の 1 つのタイプです。割引をするメソッドが必要であるとします。割引額は、注文のタイプにより異なります。
注文の一般的な概念をインターフェースとしてモデリングし、顧客用および従業員用に実装します。次の例では、注文の割引についてのみ示します。
これは PurchaseOrder インターフェースの定義です。
このクラスは、顧客の注文用の PurchaseOrder インターフェースを実装します。
このクラスは、従業員の注文用の PurchaseOrder インターフェースを実装します。
- インターフェース PurchaseOrder は汎用的なプロトタイプとして定義されています。インターフェース内で定義されているメソッドにはアクセス修飾子はなく、その署名のみが含まれます。
- CustomerPurchaseOrder クラスはこのインターフェースを実装しているため、discount メソッドの定義を提供する必要があります。インターフェースを実装するすべてのクラスで、インターフェースに含まれるすべてのメソッドを定義する必要があります。
新しいインターフェースを定義する場合、新しいデータ型を定義することになります。インターフェース名は、他のデータ型の名前を使用できる場所であれば、どの場所でも使用できます。型がインターフェースである変数に割り当てられたオブジェクトは、インターフェースを実装するクラスのインスタンスまたはサブインターフェースデータ型でなければなりません。
「クラスとキャスト」も参照してください。
バージョン管理動作の変更
API バージョン 50.0 以降の場合、範囲およびアクセシビリティのルールは、@namespaceAccessible アノテーションが付加されている Apex 変数、メソッド、内部クラス、およびインターフェースに適用されます。アクセシビリティの考慮事項については、「NamespaceAccessible アノテーション」を参照してください。名前空間ベースの参照についての詳細は、「第二世代パッケージでの Apex クラスの名前空間ベースの参照」を参照してください。