ネストされたクラスは、包含クラス内の静的フィールド、プロパティ、およびメソッドにアクセスできる。
ネストされたクラス定義でオプションの 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.