可変プロパティと不変プロパティ
プロパティ値へのアクセス設定
プロパティの SetAccess 属性によって、コードがオブジェクトのプロパティ値を変更できる条件を判別できます。オブジェクトのプロパティ値に対して、さまざまなレベルのアクセスを可能にする 4 つのレベルの set アクセスがあります。
SetAccess = public— オブジェクトにアクセスする任意のコードでパブリックのプロパティ値を設定できます。ハンドル クラスと値クラスでは、オブジェクト プロパティの変更に関する動作に違いがあります。SetAccess = protected— クラス メソッドまたはサブクラスのメソッド内から実行するコードによってのみプロパティ値を設定できます。クラスまたはクラスのサブクラスでメソッドがオブジェクト プロパティの値を変更するように定義していない限り、オブジェクト プロパティの値を変更できません。SetAccess = private— 定義を行うクラスによってのみプロパティ値を設定できます。クラスがプロパティを設定するメソッドを定義する場合のみ、オブジェクト プロパティの値を変更できます。SetAccess = immutable— プロパティ値はコンストラクターで設定されます。オブジェクトを作成した後に不変プロパティの値を変更することはできません。プロパティの値は既定値として、またはクラス コンストラクターに設定します。不変プロパティには、プロパティの set メソッド (set.) を定義できません。PropertyName
関連情報については、オブジェクトを含んだプロパティを参照してください。
不変プロパティの定義
このクラス定義では、Immute クラス コンストラクターのみが CurrentDate プロパティの値を設定できます。
classdef Immute properties (SetAccess = immutable) CurrentDate end methods function obj = Immute obj.CurrentDate = datetime("today"); end end end
a = Immute
a =
Immute with properties:
CurrentDate: 09-Jun-2022