主要内容

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

クラスのメソッドおよび関数の定義

方法ブロック

classdefブロックの方法ブロック内で,MATLAB®関数としてメソッドを定義します。コンストラクターメソッドは,クラスと同じ名前をもち,クラスの初期化されたオブジェクトを返します。インスタンス固有のプロパティ値をもつオブジェクトを作成するには,クラスコンストラクターでプロパティに値を割り当てます。结束ステートメントを使用して,すべてのメソッド関数を終了します。

classdef类名称属性PropertyName结束方法函数obj =类名称(__arg1、…)obj。PropertyName= arg1; ...结束函数ordinaryMethod (obj, __arg1,…)…结束结束方法(静态)函数staticMethod (__arg1、…)…结束结束结束

メソッド呼び出しの構文

c++やJava®などの言語とは異なり,MATLABには,すべてのメソッドに渡される特別な非表示のクラスオブジェクトはありません。このため,クラスのオブジェクトを明示的にメソッドに渡さなければなりません。左端の引数がクラスオブジェクトである必要はなく,引数リストには複数のオブジェクトを含めることができます。MATLABにより,優先引数のクラスによって定義されたメソッドにディスパッチされます。詳細は,メソッドの呼び出しを参照してください。

メソッドは,呼び出されるためにはMATLABパス上になければなりません。たとえば,オブジェクトを作成した後、現在のフォルダーをメソッド ファイルが認識できないフォルダーに変更すると、そのメソッドを呼び出したときにエラーが発生します。

MATLABコードでメソッド名を使用する場合は,必ず大文字と小文字を区別してください。

通常のメソッド

MATLABの関数構文またはドット表記を使用して,通常のメソッドを呼び出します。たとえば,ordinaryMethodを定義するクラスがあるとします。定義クラスのオブジェクトおよび必要なすべての引数を渡します。

classdefMyClass方法函数= ordinaryMethod (obj __arg1)...结束结束结束

クラスのobjオブジェクトと次のいずれかの構文を使用してordinaryMethodを呼び出します。

obj = MyClass;r = ordinaryMethod (obj __arg1);r = obj.ordinaryMethod (__arg1);

静的メソッド

静的メソッドはクラスのオブジェクトを必要としません。静的メソッドを呼び出すには、メソッドを定義するクラスを MATLAB が判別できるよう、メソッド名にクラス名の接頭辞を付けます。

classdefMyClass方法(静态)函数= staticMethod (__arg1)...结束结束结束

类名称methodnameの構文を使用してstaticMethodを呼び出します。

r = MyClass.staticMethod (__arg1);

所属クラスのオブジェクトを必要としないメソッドについての詳細は,静的メソッドを参照してください。

プライベートメソッド

プライベートメソッドを作成するには,访问メソッドの属性を使用します。私人フォルダーを使用する必要はありません。

メソッド属性のリストについては,メソッドの属性を参照してください。

メソッドの詳細な情報

メソッド

クラスに関連する関数

クラス定義(classdef)を含むファイルでは,クラスメソッドでない関数を定義できます。classdef——结束ブロック外で,クラス定義と同様のファイルでローカル関数を定義します。classdefファイル内で定義される関数は,ローカル関数のように動作します。これらのローカル関数は,同じファイルの任意の場所から呼び出せますが,それらを定義したファイル外では見ることができません。

classdefファイルのローカル関数は,そのファイル内のみで使用するユーティリティ関数として役立ちます。これらの関数は,クラスのインスタンスである引数を受け取ったり,返したりすることができますが,通常のメソッドの場合のように,必須ではありません。たとえば,以下のコードは,myUtilityFcnclassdefブロックの外側で定義します。

classdefMyClass属性PropName结束方法函数obj = MyClass(arg1)PropName = __arg1;结束结束结束% classdef的结束函数myUtilityFcn...结束

また,パッケージ関数を作成することもできます。パッケージ関数の呼び出し時にはパッケージ名を使用する必要があります。

関数と演算子のオーバーロード方法

オーバーロードするMATLAB関数と同じ名前でクラスメソッドを定義することにより,クラスに対しその関数をオーバーロードします。MATLABは,そのクラスのインスタンスによって関数が呼び出されるとクラスメソッドにディスパッチします。

適切な名前でクラスメソッドを定義することによって,MATLABの算術演算子,論理演算子,関係演算子,インデックス演算子をオーバーロードできます。

クラスに定義されている演算の一覧については,处理クラスを参照してください。处理から派生されるすべてのクラスは,これらのメソッドを継承します。

別々のファイルにメソッドを定義するルール

別々のファイルに定義したメソッドには,次のルールが適用されます。

  • 別々のファイルに定義したメソッドの属性を指定するには,classdefファイルの方法ブロックでこのメソッドを宣言します。方法ブロックで属性値を指定します。

  • 方法ブロックで宣言される構文(使用される場合)を,メソッドの函数行に一致させます。

  • 別々のファイルは,クラス()フォルダー内になければなりません。

  • クラスコンストラクターメソッドはclassdefファイルで定義されていなければなりません。コンストラクターは別のファイルにすることはできません。

  • ハンドルクラス删除メソッドはclassdefファイルで定義されなければなりません。删除メソッドは別のファイルにすることはできません。

    関数名にドットを使用する関数は,以下を含めてclassdefファイルで定義されなければなりません。

    • クラスがパッケージに含まれているため,パッケージ名をクラス名の一部として使用しなければならないコンバーターメソッド

    • プロパティの设置および得到アクセスメソッド

別のファイルにメソッドを定義する方法の詳細については,別ファイルのメソッドを参照してください。

関連するトピック