Main Content

プロパティの属性

プロパティの属性の目的

クラス定義で属性を指定すると、特定の目的のためにプロパティの動作をカスタマイズできます。属性を設定することにより、プロパティのアクセス、データ ストレージ、可視性などの特性を制御します。サブクラスは、スーパークラス メンバーの属性を継承しません。

プロパティ属性の指定

プロパティの属性は、properties キーワードと同じ行に割り当てます。

properties (Attribute1 = value1, Attribute2 = value2,...)
   ...
end

たとえば、private アクセスをもつプロパティ Data を定義します。

properties (Access = private)
   Data
end

値が true である属性には、より簡単な構文を使用できます。属性名のみの場合は true、属性名に not 演算子 (~) が追加されている場合は false を意味します。たとえば、以下のブロックでは抽象プロパティを定義しています。

properties (Abstract)
   ...
end

プロパティの属性の表

すべてのプロパティは、次の表に示した属性をサポートします。属性の値は、既定ではない値を指定する properties...end コード ブロック内で定義済みのすべてのプロパティに適用されます。明示的に定義されていない属性は既定値を使用します。

プロパティの属性

属性

追加情報

AbortSet

  • true – MATLAB® は、新しい値が現在値と同じである場合、プロパティ値を設定せず、set メソッドを呼び出すこともありません。

  • false (既定) – MATLAB は現在値に関係なくプロパティ値を設定します。

ハンドル クラスの場合のみ。AbortSettrue に設定する場合も、プロパティ PreSetPostSet のイベントのトリガーを防ぐことができます。

詳細については、プロパティ値が変化しない場合の代入を参照してください。

Abstract

  • true – このプロパティは実装されません。ただし、具象サブクラスは、Abstracttrue に設定せずにこのプロパティをオーバーライドしなければなりません。

  • false (既定) – このプロパティは具象で、サブクラス内でオーバーライドされる必要はありません。

Abstract プロパティは、set access または get アクセス メソッドを定義できません。プロパティの get メソッドおよび set メソッドを参照してください。

Abstract プロパティは、初期値を定義できません。

シールされたクラスは抽象メンバーを定義できません。

Access

  • public (既定) – プロパティにはどのコードからでもアクセスできます。

  • protected – プロパティには定義クラスまたはそのサブクラスからアクセスできます。

  • private – プロパティには定義クラスのメンバーのみがアクセスできます。

  • このプロパティに get および set アクセスのあるクラスのリスト。単一の meta.class オブジェクトとして、または meta.class オブジェクトの cell 配列として、クラスを指定します。詳細については、プロパティ アクセス リストを参照してください。

Access を使用して、SetAccessGetAccess を同じ値に設定します。

Access を空の cell 配列 {} として指定することは、private アクセスと同じです。

詳細については、クラス メンバーのアクセスを参照してください。

Constant

  • true – プロパティはクラスのすべてのインスタンスで同じ値をもちます。

  • false (既定) – プロパティはインスタンス間で異なる値を持てます。

サブクラスは定数プロパティを継承はしますが、変更はできません。

定数プロパティは依存プロパティとしても定義できません。

SetAccess の値は、定数プロパティでは無視されます。

詳細は、定数値をもつクラス プロパティの定義を参照してください。

Dependent

  • true – プロパティ値はオブジェクトに保存されません。プロパティへのアクセスがあると、この値が計算されます。

  • false (既定) – プロパティ値はオブジェクトに保存されます。

依存プロパティの set メソッドを定義できますが、set メソッドは実際にはプロパティの値を設定できません。別のプロパティの値を設定するなど、他のアクションを実行できます。例については、依存プロパティをもつ set メソッドを使用するケースを参照してください。

依存プロパティの get メソッドから返される値は、isequal を使ってオブジェクトの等価性をテストする際に考慮されません。

GetAccess

  • public (既定) – プロパティはどのコードからも読み取ることができます。

  • protected – プロパティは定義クラスまたはそのサブクラスから読み取ることができます。

  • private – プロパティは定義クラスのメンバーのみが読み取ることができます。

  • このプロパティを読み取ることができるクラスのリスト。単一の meta.class オブジェクトとして、または meta.class オブジェクトの cell 配列として、クラスを指定します。詳細については、プロパティ アクセス リストを参照してください。

GetAccess を空の cell 配列 {} として指定することは、private アクセスと同じです。

MATLAB のコマンド ウィンドウには、protectedprivate、および GetAccess をもつプロパティの名前や値は表示されません。

すべてのサブクラスは、プロパティの SetAccessGetAccess 属性に、スーパークラスと同じ値を指定しなければなりません。

詳細については、クラス メンバーのアクセスを参照してください。

GetObservable

  • true – ハンドル クラス プロパティに対してリスナーを作成できます。このリスナーは、プロパティ値が必要となるときに呼び出されます。

  • false (既定) – リスナーはこのプロパティにアクセスできません。

詳細については、プロパティの設定とクエリのイベントを参照してください。

Hidden

  • true – プロパティは、プロパティ リストや、関数 getset、または properties の呼び出し結果には表示されません。

  • false (既定) – プロパティは表示されます。

MATLAB のコマンド ウィンドウには、Hidden 属性が true のプロパティの名前や値は表示されません。ただし、クラス ダイアグラム ビューアー アプリには非表示のプロパティも表示されます。

NonCopyable

  • true – プロパティ値を定義するオブジェクトがコピーされても、プロパティ値はコピーされません。

  • false (既定) – オブジェクトがコピーされると、プロパティ値がコピーされます。

ハンドル クラスでのみ NonCopyabletrue に設定できます。

詳細については、コピーのプロパティの排除を参照してください。

PartialMatchPriority

正の整数 – get メソッドと set メソッドで使用されるプロパティ名の部分一致の、相対的な優先度を定義します。既定値は 1 です。

matlab.mixin.SetGet のサブクラスでのみ使用します。

詳細については、プロパティ名の部分一致に対する優先順位の設定を参照してください。

SetAccess

  • public (既定) — プロパティはどのコードからも設定できます。

  • protected — プロパティは定義クラスまたはそのサブクラスから設定できます。

  • private — プロパティは定義クラスのメンバーのみが設定できます。

  • immutable — プロパティはコンストラクターのみが設定できます。

  • このプロパティへの set アクセスをもつクラスのリスト。単一の meta.class オブジェクトとして、または meta.class オブジェクトの cell 配列として、クラスを指定します。詳細については、プロパティ アクセス リストを参照してください。

すべてのサブクラスは、プロパティの SetAccessGetAccess 属性に、スーパークラスと同じ値を指定しなければなりません。

詳細については、クラス メンバーのアクセスオブジェクトを含んだプロパティ、および可変プロパティと不変プロパティを参照してください。

SetObservable

  • true – ハンドル クラス プロパティに対してリスナーを作成できます。このリスナーは、プロパティ値が設定されると呼び出されます。

  • false (既定) – リスナーはこのプロパティにアクセスできません。

詳細については、プロパティの設定とクエリのイベントを参照してください。

Transient

  • true – オブジェクトがファイルに保存されるとき、または MATLAB から別のプログラム (MATLAB エンジン アプリケーションなど) に送信されるときに、プロパティ値は保存されません。

  • false (既定) – オブジェクトが保存されるとき、プロパティ値は保存されます。

詳細については、オブジェクトの保存と読み込みのプロセスを参照してください。

フレームワークの属性

特定のフレームワーク基底クラスを使用するクラスには、フレームワーク固有の属性があります。これらの属性の情報については、使用している特定の基底クラスのドキュメンテーションを参照してください。

プロパティ アクセス リスト

AccessGetAccess、および SetAccess 属性には meta.class インスタンスのリストを使用できます。たとえば、以下のクラスは、Prop1 および Prop2 プロパティのアクセス リストを宣言します。

classdef PropertyAccess
   properties (GetAccess = {?ClassA, ?ClassB})
      Prop1
   end
   properties (Access = ?ClassC)
      Prop2
   end
end

Prop1 の場合は、以下のようになります。

  • クラス ClassA および ClassB には、Prop1 への get アクセスがあります。

  • ClassA および ClassB のすべてのサブクラスには、Prop1 への get アクセスがあります。

  • アクセス リストは継承されないため、PropertyAccess のサブクラスは、そのアクセスを明示的に定義しない限り、Prop1 への get アクセスはありません。

Prop2 の場合は、以下のようになります。

  • ClassC には Prop2 への get および set アクセスがあります。

  • ClassC のすべてのサブクラスには、Prop2 への get および set アクセスがあります。

  • アクセス リストは継承されないため、PropertyAccess のサブクラスは、そのアクセスを明示的に定義しない限り、Prop2 にはアクセスできません。

関連するトピック