NETJVM 

ネストされたクラス: JVM COBOL

JVM COBOL では、別のクラス内でネストされたクラスを定義できます。包含クラスに属するすべてのメソッドの後に記述します。

ネストされたクラスは、包含クラス内の静的フィールド、プロパティ、およびメソッドにアクセスできます。

ネストされたクラス定義でオプションの SHARING PARENT 指定を使用すると、ネストされたクラスのインスタンス メソッドおよびプロパティは、包含クラスのインスタンス フィールド、プロパティ、およびメソッドにアクセスできます。

class-id ContainingClass.... class-id Nested1.... end class. class-id Nested2 sharing parent.... end class. end class.

SHARING PARENT 指定を持つネストされたクラス

SHARING PARENT 指定を持つネストされたクラスは、囲みクラスのインスタンス メソッド内からのみインスタンス化できます。これらのクラスは、そのインスタンス メンバーが private であっても、包含クラスからインスタンス メンバーにアクセスできます。

このようなネストされたクラスには、その包含クラスのインスタンスへの暗黙参照が含まれます。ネストされたクラスは、この参照を使用して囲みクラスのインタンス メンバーにアクセスします。つまり、外部で保持される内部クラスへのすべての参照のガベージが収集されるまで、包含クラス インスタンスのガベージは収集されません。

次に例を示します。

class-id ContainingClass.01 companyName string value "Micro Focus". method-id instance1.01 o type Nested2. set o to new Nested2 ... end method class-id Nested2 SHARING PARENT. method-id method2 display companyName end method. end class. end class.

SHARING PARENT 指定を持たないネストされたクラス

SHARING PARENT 指定なしで定義されるネストされたクラスは、public、private または internal として宣言できます。指定された可視性に応じて、これらのクラスは、包含クラスやインスタンス メソッドからのみではなく、あらゆるコンテキストからインスタンス化できます。これらのクラスは、明示的なオブジェクト参照を使用することでのみ、包含クラスのインスタンス メンバーにアクセスできます。