既定の動作を変更するメソッド
クラスの動作をカスタマイズする方法
ユーザーがオブジェクトに動作を実行するときに、MATLAB® が暗黙的に呼び出す関数があります。たとえば、[B(1);A(3)]
のようなステートメントは、インデックスによる参照と垂直方向の連結を含みます。
特定の動作を制御するメソッドを定義して、ユーザー定義オブジェクトの動作を変更することができます。動作を変更するには、MATLAB 関数の名前とシグネチャをもつ適切なメソッドを実装します。
各動作を制御するメソッド
次の表ではクラスに実装するメソッドを挙げ、各メソッドが制御する動作を説明します。
実装するクラス メソッド | 説明 |
---|---|
オブジェクトの連結 | |
cat 、horzcat 、および vertcat | オブジェクトの連結時の動作をカスタマイズします。 プロパティをもつ組み込み型のサブクラスを参照してください。 |
空配列の作成 | |
指定されたクラスの空配列を作成します。空配列を参照してください。 | |
オブジェクトの表示 | |
| MATLAB は、式またはステートメントがセミコロンで終了しない場合、
関数 disp のオーバーロードを参照してください。 |
オブジェクトを他のクラスに変換 | |
オブジェクトを MATLAB 組み込みクラスに変換します。 文字コンバーターとdouble コンバーターを参照してください。 | |
オブジェクトの保存と読み込み | |
loadobj および saveobj | オブジェクトの読み込みと保存を行うときに動作をカスタマイズします。 オブジェクトの保存と読み込みを参照してください。 |
変形と再配列 | |
多次元配列の次元の再配列 | |
ベクトルまたは行列の転置 | |
複素共役転置 | |
配列の次元の変更 | |
指定された次元に沿った配列の複製 | |
サイズと形状の判定 | |
入力がスカラーかどうかの判定 | |
入力がベクトルかどうかの判定 | |
入力が行列かどうかの判定 | |
入力が空かどうかの判定 |
関数のオーバーロードとメソッドのオーバーライド
オーバーロードとオーバーライドは、クラスの動作をカスタマイズする手法を説明する用語です。ここでは、MATLAB での使い方を説明します。
オーバーロード
オーバーロードは、同じスコープ内に同じ名前をもつ複数の関数またはメソッドがあることを意味します。MATLAB は優先引数に基づき特定の関数またはメソッドにディスパッチします。たとえば、timeseries
クラスは MATLAB 関数 plot
をオーバーロードします。入力引数として timeseries
オブジェクトで plot
を呼び出すと、MATLAB は、plot
と名付けられた timeseries
クラス メソッドを呼び出します。
オーバーロードされない関数を呼び出すには、関数 builtin
を使用します。
オーバーライド
オーバーライドは、スーパークラスから継承されたメソッドを再定義することを意味します。MATLAB はメソッドの最も特定的なバージョンにディスパッチします。すなわち、優先引数がサブクラスのオブジェクトである場合は、MATLAB はサブクラス メソッドを呼び出します。
クラスの優位性を制御するには、InferiorClasses
属性を使用します。