この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

インターフェース

インターフェースは、メソッドが実装されていないクラスのようなものです。メソッドの署名はありますが、各メソッドの本文は空です。インターフェースを使用するには、インターフェースに含まれるすべてのメソッドの本文を提供することによって、別のクラスがインターフェースを実装する必要があります。

インターフェースにより、コードで抽象化レイヤーを使用できます。インターフェースは、メソッドの特定の実装をメソッドの宣言から切り離します。これにより、1 つのメソッドをアプリケーションに基づいて別々に実装できます。

インターフェースの定義は、新しいクラスの定義に似ています。たとえば、ある企業が 2 種類の注文に対応しているとします。顧客からの注文と、従業員からの注文です。どちらも注文の 1 つのタイプです。割引をするメソッドが必要であるとします。割引額は、注文のタイプにより異なります。

注文の一般的な概念をインターフェースとしてモデリングし、顧客用および従業員用に実装します。次の例では、注文の割引についてのみ示します。

これは PurchaseOrder インターフェースの定義です。

1// An interface that defines what a purchase order looks like in general
2public interface PurchaseOrder {
3    // All other functionality excluded
4    Double discount();
5}

このクラスは、顧客の注文用の PurchaseOrder インターフェースを実装します。

1// One implementation of the interface for customers
2public class CustomerPurchaseOrder implements PurchaseOrder {
3    public Double discount() {
4        return .05;  // Flat 5% discount
5    }
6}

このクラスは、従業員の注文用の PurchaseOrder インターフェースを実装します。

1// Another implementation of the interface for employees
2public class EmployeePurchaseOrder implements PurchaseOrder {
3      public Double discount() {
4        return .10;  // It’s worth it being an employee! 10% discount
5      } 
6}
上記の例では、次の点にご注意ください。
  • インターフェース PurchaseOrder は汎用的なプロトタイプとして定義されています。インターフェース内で定義されているメソッドにはアクセス修飾子はなく、その署名のみが含まれます。
  • CustomerPurchaseOrder クラスはこのインターフェースを実装しているため、discount メソッドの定義を提供する必要があります。インターフェースを実装するすべてのクラスで、インターフェースに含まれるすべてのメソッドを定義する必要があります。

新しいインターフェースを定義する場合、新しいデータ型を定義することになります。インターフェース名は、他のデータ型の名前を使用できる場所であれば、どの場所でも使用できます。型がインターフェースである変数に割り当てられたオブジェクトは、インターフェースを実装するクラスのインスタンスまたはサブインターフェースデータ型でなければなりません。

「クラスとキャスト」も参照してください。

クラスが「管理-リリース済み」パッケージバージョンでアップロードされた後に、global インターフェースにメソッドを追加することはできません。

メモ

バージョン管理動作の変更

API バージョン 50.0 以降の場合、範囲およびアクセシビリティのルールは、@namespaceAccessible アノテーションが付加されている Apex 変数、メソッド、内部クラス、およびインターフェースに適用されます。アクセシビリティの考慮事項については、「NamespaceAccessible アノテーション」を参照してください。名前空間ベースの参照についての詳細は、「第二世代パッケージでの Apex クラスの名前空間ベースの参照」を参照してください。