オブジェクトを含んだプロパティ
既定のプロパティ値としてのオブジェクトの代入
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.