このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
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
ファイルのローカル関数は,そのファイル内のみで使用するユーティリティ関数として役立ちます。これらの関数は,クラスのインスタンスである引数を受け取ったり,返したりすることができますが,通常のメソッドの場合のように,必須ではありません。たとえば,以下のコードは,myUtilityFcn
をclassdef
ブロックの外側で定義します。
classdefMyClass属性PropName结束方法函数obj = MyClass(arg1)PropName = __arg1;结束结束结束% classdef的结束函数myUtilityFcn...结束
また,パッケージ関数を作成することもできます。パッケージ関数の呼び出し時にはパッケージ名を使用する必要があります。
オーバーロードするMATLAB関数と同じ名前でクラスメソッドを定義することにより,クラスに対しその関数をオーバーロードします。MATLABは,そのクラスのインスタンスによって関数が呼び出されるとクラスメソッドにディスパッチします。
適切な名前でクラスメソッドを定義することによって,MATLABの算術演算子,論理演算子,関係演算子,インデックス演算子をオーバーロードできます。
クラスに定義されている演算の一覧については,处理
クラスを参照してください。处理
から派生されるすべてのクラスは,これらのメソッドを継承します。
別々のファイルに定義したメソッドには,次のルールが適用されます。
別々のファイルに定義したメソッドの属性を指定するには,classdef
ファイルの方法ブロックでこのメソッドを宣言します。方法ブロックで属性値を指定します。
方法ブロックで宣言される構文(使用される場合)を,メソッドの函数
行に一致させます。
別々のファイルは,クラス(@
)フォルダー内になければなりません。
クラスコンストラクターメソッドはclassdef
ファイルで定義されていなければなりません。コンストラクターは別のファイルにすることはできません。
ハンドルクラス删除
メソッドはclassdef
ファイルで定義されなければなりません。删除
メソッドは別のファイルにすることはできません。
関数名にドットを使用する関数は,以下を含めてclassdef
ファイルで定義されなければなりません。
クラスがパッケージに含まれているため,パッケージ名をクラス名の一部として使用しなければならないコンバーターメソッド
プロパティの设置および得到アクセスメソッド
別のファイルにメソッドを定義する方法の詳細については,別ファイルのメソッドを参照してください。