Newer Version Available
クラスの拡張
クラス拡張するクラスは、拡張元のクラスのすべてのメソッドとプロパティを継承します。さらに、拡張クラスでは、メソッド定義で override キーワードを使用して既存の仮想メソッドを上書きできます。仮想メソッドを上書きすることで、既存のメソッドの異なる実装方法を使用できます。つまり、特定のメソッドの動作がコールするオブジェクトによって異なることになります。これは「多態性」と呼ばれます。
クラス拡張には、クラス定義で extends キーワードを使用します。クラスは、別のクラスを 1 つまでしか拡張できませんが、複数のインターフェースを実装できます。
この例は、YellowMarker クラスで Marker クラスを拡張する方法を示しています。このセクションの継承の例を実行するには、まず Marker クラスを作成します。
次に、Marker クラスを拡張する YellowMarker クラスを作成します。
拡張クラスでは、拡張元のクラスとは共通しない追加のメソッド定義も使用できます。この例の場合、RedMarker クラスは Marker クラスを拡張し、Marker クラスでは使用できない追加メソッド computePrice が含まれています。この追加メソッドをコールするには、オブジェクトデータ型が拡張クラスである必要があります。
次のスニペットを実行する前に、RedMarker クラスを作成します。これは、組織の Marker クラスを必要とします。
次のスニペットは、RedMarker クラスの追加メソッドをコールする方法を示しています。開発者コンソールの [Execute Anonymous (匿名実行)] ウィンドウで、次のスニペットを実行します。
拡張はインターフェースにも適用され、インターフェースが別のインターフェースを拡張することもできます。クラスでは、インターフェースが別のインターフェースを拡張すると、拡張元のインターフェースのすべてのメソッドとプロパティが拡張先のインターフェースでも利用できます。
バージョン管理動作の変更
API バージョン 50.0 以降の場合、範囲およびアクセシビリティのルールは、@namespaceAccessible アノテーションが付加されている Apex 変数、メソッド、内部クラス、およびインターフェースに適用されます。アクセシビリティの考慮事項については、「NamespaceAccessible アノテーション」を参照してください。名前空間ベースの参照についての詳細は、「第二世代パッケージでの Apex クラスの名前空間ベースの参照」を参照してください。