プロパティの属性
プロパティの属性の目的
クラス定義で属性を指定すると、特定の目的のためにプロパティの動作をカスタマイズできます。属性を設定することにより、プロパティのアクセス、データ ストレージ、可視性などの特性を制御します。サブクラスは、スーパークラス メンバーの属性を継承しません。
プロパティ属性の指定
プロパティの属性は、properties キーワードと同じ行に割り当てます。
properties (Attribute1 = value1, Attribute2 = value2,...) ... end
たとえば、private アクセスをもつプロパティ Data を定義します。
properties (Access = private) Data end
値が true である属性には、より簡単な構文を使用できます。属性名のみの場合は true、属性名に not 演算子 (~) が追加されている場合は false を意味します。たとえば、以下のブロックでは抽象プロパティを定義しています。
properties (Abstract)
...
endプロパティの属性の表
すべてのプロパティは、次の表に示した属性をサポートします。属性の値は、既定ではない値を指定する properties...end コード ブロック内で定義済みのすべてのプロパティに適用されます。明示的に定義されていない属性は既定値を使用します。
プロパティの属性
属性 | 値 | 追加情報 |
|---|---|---|
|
| ハンドル クラスの場合のみ。 詳細については、プロパティ値が変化しない場合の代入を参照してください。 |
|
| Abstract プロパティは、set access または get アクセス メソッドを定義できません。プロパティの get メソッドおよび set メソッドを参照してください。 Abstract プロパティは、初期値を定義できません。 シールされたクラスは抽象メンバーを定義できません。 |
|
|
詳細については、クラス メンバーのアクセスを参照してください。 |
|
| サブクラスは定数プロパティを継承はしますが、変更はできません。 定数プロパティは依存プロパティとしても定義できません。
詳細は、定数値をもつクラス プロパティの定義を参照してください。 |
|
| 依存プロパティの set メソッドを定義できますが、set メソッドは実際にはプロパティの値を設定できません。別のプロパティの値を設定するなど、他のアクションを実行できます。例については、依存プロパティをもつ set メソッドを使用するケースを参照してください。 依存プロパティの get メソッドから返される値は、 |
|
|
MATLAB のコマンド ウィンドウには、 すべてのサブクラスは、プロパティの 詳細については、クラス メンバーのアクセスを参照してください。 |
|
| 詳細については、プロパティの設定とクエリのイベントを参照してください。 |
|
| MATLAB のコマンド ウィンドウには、Hidden 属性が true のプロパティの名前や値は表示されません。ただし、クラス ダイアグラム ビューアー アプリには非表示のプロパティも表示されます。 |
|
| ハンドル クラスでのみ 詳細については、コピーのプロパティの排除を参照してください。 |
| 正の整数 – |
詳細については、プロパティ名の部分一致に対する優先順位の設定を参照してください。 |
|
| すべてのサブクラスは、プロパティの 詳細については、クラス メンバーのアクセス、オブジェクトを含んだプロパティ、および可変プロパティと不変プロパティを参照してください。 |
|
| 詳細については、プロパティの設定とクエリのイベントを参照してください。 |
|
| 詳細については、オブジェクトの既定の保存と読み込みのプロセスを参照してください。 |
|
|
例と詳細については、Weak Reference Handlesを参照してください。 |
フレームワークの属性 | 特定のフレームワーク基底クラスを使用するクラスには、フレームワーク固有の属性があります。これらの属性の情報については、使用している特定の基底クラスのドキュメンテーションを参照してください。 | |
プロパティ アクセス リスト
Access、GetAccess、および SetAccess 属性には matlab.metadata.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にはアクセスできません。