ハンドル スーパークラス
ハンドル クラスをベースとする構築
handle
クラスは抽象クラスです。したがって、このクラスのオブジェクトを直接作成することはできません。ハンドルの動作を継承するサブクラスを実装するには、handle
クラスをスーパークラスとして使用します。MATLAB® は、handle
クラスから派生する複数のクラスを定義します。これらのクラスは、それぞれのサブクラスに特化した機能を提供します。
特化されたハンドル基底クラス
ハンドルの動作と特定の機能の両方をクラスに追加するには、次の handle
クラスからクラスを派生させます。
matlab.mixin.SetGet
— プロパティ値にアクセスするset
とget
メソッドを提供します。dynamicprops
— オブジェクトに関連付けられてはいるものの、一般的なクラスではないプロパティの定義を可能にします。matlab.mixin.Copyable
— ユーザー クラス用にカスタマイズできるcopy
メソッドを提供します。
サブクラスの定義方法の詳細については、サブクラス コンストラクターの設計を参照してください。
ハンドル クラスのメソッド
handle
クラスからクラスを派生させると、そのサブクラスは、ハンドル オブジェクトをより効果的に操作できるメソッドを継承します。
関数 methods
にクラス名を渡すことによって、クラスのメソッドを一覧表示します。
methods('handle')
Methods for class handle: addlistener findobj gt lt delete findprop isvalid ne eq ge le notify
イベント メソッドとリスナー メソッド
notify
および addlistener
メソッドの実装方法についての詳細は、イベントとリスナーの構文を参照してください。
比較演算のメソッド
TF = eq(H1,H2) TF = ne(H1,H2) TF = lt(H1,H2) TF = le(H1,H2) TF = gt(H1,H2) TF = ge(H1,H2)
ハンドル クラスはこれらの関数をオーバーロードして、等価性テストとハンドルの並べ替えをサポートします。入力配列の各ペアに対して、これらの関数は、同じサイズの logical 配列を出力します。各要素は、要素ごとの等価性または比較テスト結果です。入力配列どうしは、同じサイズでなければなりません。入力配列の 1 つ (または両方とも) がスカラーになることができます。このメソッドは、必要に応じてスカラー拡張を行います。ハンドル クラスの比較演算のメソッドの詳細については、relationaloperators
を参照してください。
ハンドルの有効性のテスト
変数が有効なハンドル オブジェクトであるかどうかを判定するには、isvalid
handle
クラス メソッドを使用します。たとえば、ステートメントでは次になります。
B = isvalid(H)
B
は H
の対応する要素が有効なハンドルである場合に限り、各要素が true
となる logical 配列です。B
は常に H
と同じサイズです。
MATLAB がオブジェクトを破棄する場合
MATLAB は、関数が以下の操作を実行する場合に、関数のワークスペース内のオブジェクトを破棄します。
オブジェクト変数を新しい値に再び割り当てる
関数の残りの部分でオブジェクト変数を使用しない
関数の実行を終了する
MATLAB がオブジェクトを破棄するときには、オブジェクトのプロパティに保存された値も破棄されます。MATLAB は MATLAB またはオペレーティング システムでの使用のためにオブジェクトに関連付けられたコンピューターのメモリを解放します。
ハンドル クラスでメモリを解放する必要はありません。ただし、オブジェクトを破棄するときに実行する別の操作がある場合もあります。たとえば、ファイルを閉じたり、オブジェクト コンストラクターが起動した外部プログラムを終了したりする操作です。このような目的で、ハンドル サブクラスに delete
メソッドを定義します。
詳細については、ハンドル クラスのデストラクターを参照してください。