主要内容

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

メソッドの呼び出しでのオブジェクトの優先順位

オブジェクトの優先順位

オブジェクトの優先順位が定まると,MATLAB®は,与えられた状況で,可能な多くのバージョンからいずれの演算子または関数を呼び出すかを決めることができます。

たとえば,次の式を考えます。

objectA + objectB

通常,オブジェクトは等しい優先順位をもち,左端のオブジェクトに関連付けられたメソッドが呼び出されます。ただし,次の2つの例外があります。

  • classdef構文で定義されたクラスは,次のMATLABクラスよりも優先される。

    int64uint64int32uint32int16uint16int8uint8字符字符串逻辑细胞结构体,および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

この属性は,リストされたクラスの順序で定義されている,クラスの相対的な優先順位を決めます。

階層構造の中の位置

優先順位の階層構造の中でobjectAobjectBよりも上位にある場合,次の式

objectA + objectB

classA/ plus.mを呼び出します。逆に,objectBが優先順位の階層構造の中でobjectAよりも上位にある場合,MATLABではclassB/ plus.mが呼び出されます。

関連するトピック