Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

サブクラス オブジェクトでのスーパークラス メソッドの呼び出し

スーパークラスとサブクラスの関係

サブクラスはスーパークラス メソッドをオーバーライドし、さらに特化した定義をサポートできます。サブクラス オブジェクトはスーパークラス オブジェクトであるという関係が成り立つため、特化したサブクラス コードを実行する前にそのメソッドのスーパークラス バージョンを呼び出すと、多くの場合に便利です。

スーパークラス メソッドの呼び出し方法

スーパークラス メソッドとサブクラス メソッドの名前が同じ場合は、サブクラス メソッドからスーパークラス メソッドを呼び出すことができます。この場合は、サブクラスからメソッド名および @ 記号の付いたスーパークラス名を参照します。

次の図に、MySuperClass で定義された superMethod を呼び出す方法を示します。

たとえば、サブクラスから disp というスーパークラス メソッドを呼び出して、オブジェクトのスーパークラス部分の表示を実装できます。続いて、サブクラスがオブジェクトのサブクラス部分を表示するコードを追加します。

classdef MySub < MySuperClass 
   methods
      function disp(obj)
         disp@MySuperClass(obj)
            ...
      end 
   end 
end 

スーパークラス コンストラクターの呼び出し方法

サブクラス オブジェクトを作成すると、MATLAB® によって、そのサブクラス オブジェクトのスーパークラスの部分を初期化するスーパークラス コンストラクターが呼び出されます。既定では、スーパークラス コンストラクターは引数なしで呼び出されます。特定の引数を指定してスーパークラス コンストラクターを呼び出す場合は、サブクラス コンストラクターから明示的にスーパークラス コンストラクターを呼び出します。スーパークラス コンストラクターの呼び出しは、オブジェクトの参照よりも前になければなりません。

スーパークラス コンストラクターの呼び出しの構文では、@ 記号を使用します。

次のクラスでは、MySub オブジェクトが MySuperClass コンストラクターによって初期化されます。スーパークラス コンストラクターは、指定された引数を使用してオブジェクトの MySuperClass 部分を構成します。

classdef MySub < MySuperClass
   methods
      function obj = MySub(arg1,arg2,...)
         obj = obj@MySuperClass(SuperClassArguments);
            ...
      end 
   end 
end 

詳細は、サブクラス コンストラクターを参照してください。

関連するトピック