ClassType (クラス・キーワード)
使用法
クラスのタイプを指定するには (必要な場合)、以下の構文を使用します。
Class MyApp.MyClass [ ClassType = classtype ]
{ //class members }
classtype は以下のいずれかになります。
-
datatype — このクラスはデータ型クラスであり、リテラル値を表すために使用されます。
-
dynamic — このクラスは、%DynamicAbstractObjectOpens in a new tab、%DynamicArrayOpens in a new tab、%DynamicObjectOpens in a new tab などのダイナミック・クラスです。
-
index — このクラスは、インデックス・インタフェースを定義する特殊クラスである、インデックス・クラスです。詳細は、クラス・リファレンスの "%Library.FunctionalIndexOpens in a new tab" を参照してください。
-
persistent — このクラスは、データをデータベースに保存することを表します。
-
serial — このクラスは、データが他の永続オブジェクトに (シリアル化された状態で) 保存されることを表します。
-
stream — このクラスは、ストリーミング・データを表します。
-
view — このクラスは、SQL ビューを定義するために使用されます ("ViewQuery" キーワードを参照してください)。
-
空の文字列は、このクラスが特定のタイプを持たないことを表します。Abstract クラスは、一般にはクラス・タイプを指定しません。
このキーワードを指定しない場合、クラス・タイプは、プライマリ・スーパークラスがあればそれから継承されます。
ClassType は、%RegisteredObjectOpens in a new tab、%SerialObjectOpens in a new tab、%PersistentOpens in a new tab、%DynamicAbstractObjectOpens in a new tab などのシステム・クラス、およびデータ型クラスに指定されるので、それらのクラスをサブクラス化する場合には、一般にこのキーワードを指定する必要はありません。
詳細
このキーワードは、このクラスの用途を指定します。クラス・コンパイラは、ClassType キーワードを使用してクラスをコンパイルする方法を決定します。例えば、ClassType が persistent の場合、クラス・コンパイラは、ストレージ・コンパイラを実行してクラスの永続コードを生成します。明示的に定義されていない限り、ClassType の値は既定値であるか、プライマリ・スーパークラスから継承されます。
永続クラスの場合は、明示的な ClassType 文が必要なのは、標準の永続性動作がオーバーライドされるときのみです。クラス定義にこのような文が含まれている場合、その理由は、開発者によってその文が指定されたか、そのクラスが生成されたコードが旧バージョンの InterSystems IRIS を使用して開発されたかのどちらかです。
サブクラスへの影響
このキーワードは、プライマリ・スーパークラスから継承されます。サブクラスは、キーワードの値をオーバーライドできます。
既定値
このキーワードを省略した場合、クラス・タイプは、プライマリ・スーパークラスがあればそれから継承されます。
シャード・クラスのクラスタイプは、persistent 以外の値を取ることはできません。