このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
オブジェクトの優先順位が定まると,MATLAB®は,与えられた状況で,可能な多くのバージョンからいずれの演算子または関数を呼び出すかを決めることができます。
たとえば,次の式を考えます。
objectA + objectB
通常,オブジェクトは等しい優先順位をもち,左端のオブジェクトに関連付けられたメソッドが呼び出されます。ただし,次の2つの例外があります。
classdef
構文で定義されたクラスは,次のMATLABクラスよりも優先される。
双
、单
、int64
、uint64
、int32
、uint32
、int16
、uint16
、int8
、uint8
、字符
、字符串
、逻辑
、细胞
、结构体
,およびfunction_handle
。
classdef
構文で定義されたクラスは,InferiorClasses
属性を使用して他のクラスに対する相対的な優先順位を指定可能。
クラスによる多項式の表現の例について考えてみましょう。DocPolynom
クラスは,DocPolynom
オブジェクトの加算を可能とする,+
メソッドを定義します。次のように,オブジェクトp
を与えます。
p = DocPolynom([1 0 -2 -5]) p = x^3-2*x-5
次の式
1 + p = x^3-2*x-4
は,DocPolynom
+
メソッドを呼び出します(これは,双
の1をDocPolynom
オブジェクトに変換してから,2つの多項式の加算を実装します)。DocPolynom
クラスは,組み込み双
クラスより優先されます。
クラス属性に下位クラスをリストすることで,classdef
構文によって定義されたクラスの相対的優先順位を指定できます。InferiorClasses
プロパティは,優先順位の階層構造の中で,あるクラスの優先順位を他のクラスよりも下位に設定します。classdef
ステートメントでInferiorClasses
プロパティを定義します。
classdef(InferiorClasses = {class1 ?,类别2 ?}) myClass
この属性は,リストされたクラスの順序で定義されている,クラスの相対的な優先順位を決めます。
優先順位の階層構造の中でobjectA
がobjectB
よりも上位にある場合,次の式
objectA + objectB
は@
classA
/ plus.m
を呼び出します。逆に,objectB
が優先順位の階層構造の中でobjectA
よりも上位にある場合,MATLABでは@
classB
/ plus.m
が呼び出されます。