Main Content

オブジェクトを含んだプロパティ

既定のプロパティ値としてのオブジェクトの代入

MATLAB® は、クラスを読み込むときに一度だけプロパティの既定値を評価します。MATLAB は、そのクラスのオブジェクトを作成するたびに代入を再評価するわけではありません。オブジェクトをクラス定義で既定のプロパティ値として代入する場合、MATLAB は、クラスを読み込むときに一度だけ、そのオブジェクトに対してコンストラクターを呼び出します。

メモ

プロパティの既定値の評価は、値が最初に必要になったときにのみ、MATLAB による初回のクラス初期化時に 1 回のみ行われます。MATLAB はクラスのインスタンスが作成されるたびに式を再評価することはありません。

プロパティの既定値として代入する式の評価の詳細については、MATLAB による式の評価を参照してください。

オブジェクトを含む読み取り専用プロパティへの割り当て

クラスによってプライベートまたは保護された SetAccess をもつプロパティが定義され、このプロパティにさらにプロパティをもつオブジェクトが含まれている場合、代入の動作はプロパティにハンドル オブジェクトまたは値オブジェクトのどちらが含まれているかによって異なります。

  • ハンドル オブジェクト – 読み取り専用プロパティに含まれているハンドル オブジェクトにはプロパティを設定できます。

  • 値オブジェクト – 読み取り専用プロパティに含まれている値オブジェクトにはプロパティを設定できません。

割り当ての動作

以下のクラスによって割り当ての動作が説明されます。

  • ReadOnlyProps – 読み取り専用プロパティが 2 つあるクラス。クラス コンストラクターは、HanClass 型のハンドル オブジェクトを PropHandle プロパティに、ValClass 型の値オブジェクトを PropValue プロパティに割り当てます。

  • HanClass – パブリック プロパティのあるハンドル クラス

  • ValClass – パブリック プロパティのある値クラス

classdef ReadOnlyProps
   properties(SetAccess = private)
      PropHandle
      PropValue     
   end
   methods
      function obj = ReadOnlyProps
         obj.PropHandle = HanClass;
         obj.PropValue = ValClass;
      end
   end
end

classdef HanClass < handle
   properties
      Hprop
   end
end 

classdef ValClass
   properties
      Vprop
   end
end

ReadOnlyProps クラスのインスタンスを作成します。

a = ReadOnlyProps
a = 

 ReadOnlyProps with properties:

    PropHandle: [1x1 HanClass]
     PropValue: [1x1 ValClass]

プライベート PropHandle プロパティを使って、含まれる HanClass オブジェクトのプロパティを設定します。

class(a.PropHandle.Hprop)
ans =

double
a.PropHandle.Hprop = 7;

値クラス オブジェクト プロパティへの割り当ては、許可されていません。

a.PropValue.Vprop = 11;

You cannot set the read-only property 'PropValue' of ReadOnlyProps.

関連するトピック