サブクラス オブジェクトでのスーパークラス メソッドの呼び出し
スーパークラスとサブクラスの関係
サブクラスはスーパークラス メソッドをオーバーライドし、さらに特化した定義をサポートできます。サブクラス オブジェクトはスーパークラス オブジェクトであるという関係が成り立つため、特化したサブクラス コードを実行する前にそのメソッドのスーパークラス バージョンを呼び出すと、多くの場合に便利です。
スーパークラス メソッドの呼び出し方法
スーパークラス メソッドとサブクラス メソッドの名前が同じ場合は、サブクラス メソッドからスーパークラス メソッドを呼び出すことができます。この場合は、サブクラスからメソッド名および @ 記号の付いたスーパークラス名を参照します。
以下は、MySuperClass で定義されている superMethod を呼び出すための構文です。
superMethod@MySuperClass(obj,superMethodArguments)
たとえば、サブクラスから disp というスーパークラス メソッドを呼び出して、オブジェクトのスーパークラス部分の表示を実装できます。続いて、サブクラスがオブジェクトのサブクラス部分を表示するコードを追加します。
classdef MySub < MySuperClass methods function disp(obj) disp@MySuperClass(obj) ... end end end
スーパークラス コンストラクターの呼び出し方法
サブクラス オブジェクトを作成すると、MATLAB® によって、そのサブクラス オブジェクトのスーパークラスの部分を初期化するスーパークラス コンストラクターが呼び出されます。既定では、MATLAB でスーパークラス コンストラクターは引数なしで呼び出されます。特定の引数を指定してスーパークラス コンストラクターを呼び出す場合は、サブクラス コンストラクターから明示的にスーパークラス コンストラクターを呼び出します。スーパークラス コンストラクターの呼び出しは、オブジェクトの参照よりも前になければなりません。
スーパークラス コンストラクターの呼び出しの構文では、@ 記号を使用します。
obj = obj@MySuperClass(SuperClassArguments)
このクラスでは、MySub オブジェクトが MySuperClass コンストラクターによって初期化されます。スーパークラス コンストラクターは、指定された引数を使用してオブジェクトの MySuperClass 部分を構成します。
classdef MySub < MySuperClass
methods
function obj = MySub(arg1,arg2,...)
obj = obj@MySuperClass(SuperClassArguments);
...
end
end
end 詳細については、サブクラス コンストラクターを参照してください。