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