列挙クラスの制限
列挙クラスには、その使用と定義において次のような一部の制限があります。
列挙クラスは暗黙的に
Sealed
されます。列挙クラスのサブクラスを定義することはできません (それをしてしまうと、セットを拡張してしまうことになるからです)。値ベースの列挙クラスのプロパティは不変です。プロパティの値を割り当てられるのはコンストラクターのみです。MATLAB® は
immutable
として値ベースの列挙クラスによって定義されたすべてのプロパティのSetAccess
属性を暗黙的に定義します。SetAccess
属性を他のいかなる値にも設定できません。Constant
として定義されていない値ベースの列挙クラスによって継承されたすべてのプロパティは、immutable
SetAccess
をもたなければなりません。ハンドルベースの列挙クラスのプロパティは変更可能です。列挙クラスのインスタンスに対してプロパティの値を設定できます。可変ハンドルと不変値の列挙メンバーを参照してください。
列挙メンバーは、同じクラスによって定義されたかスーパークラスから継承されたプロパティ、メソッド、またはイベントと同じ名前をもつことはできません。たとえば、組み込みの数値スーパークラスから継承する列挙クラスはそのスーパークラスから
full
メソッドを継承するため、"full" は有効なメンバー名ではありません。列挙値はコロン (
a:b
) 演算をサポートしていません。たとえば、FlowRate.Low:FlowRate.High
は、たとえFlowRate
クラスが数値スーパークラスから派生する場合でもエラーとなります。列挙値を定義するクラスは、同じクラスのプロパティを列挙型に制限することはできません。プロパティ値を列挙に制限するには、別の列挙クラスを作成します。プロパティ値の制限の詳細については、制限されたプロパティの例を参照してください。
プライマリ列挙メンバーに
Hidden
属性が設定されている場合、セカンダリ メンバー (基となる値が同じメンバー) にもHidden
属性を設定しなければなりません。詳細については、列挙メンバーの非表示を参照してください。