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