ネストされたクラスは、包含クラス内の静的フィールド、プロパティ、およびメソッドにアクセスできます。
ネストされたクラス定義でオプションの SHARING PARENT 指定を使用すると、ネストされたクラスのインスタンス メソッドおよびプロパティは、包含クラスのインスタンス フィールド、プロパティ、およびメソッドにアクセスできます。
class-id ContainingClass.... class-id Nested1.... end class. class-id Nested2 sharing parent.... end class. end class.
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.