Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

可変プロパティと不変プロパティ

プロパティ値へのアクセス設定

プロパティの 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

関連するトピック