インスタンス変数は原則として"プライベート"であり、クラスのメソッドからしか操作できません。これに対して、クラスの外(下位クラスではないクラスのメソッドや、ワード)から値を格納したり取り出したりできるインスタンス変数は、パブリックインスタンス変数といいます。
インスタンス変数をパブリックにするには、PUBLICというワードをその手前に書きます。インスタンス変数宣言の部分でPUBLICと書けば、それ以降のインスタンス変数はパブリックなインスタンス変数になります。また、その後でend_PUBLICと書けば、それ以降はデフォルト、つまり、プライベートインスタンス変数になります。
:class myclass super{ object }
VAR PRIVATEIVAR1
PUBLIC
VAR PUBLICIVAR1
VAR PUBLICIVAR2
end_PUBLIC
VAR PRIVATEIVAR2
.......
パブリックなインスタンス変数も、インスタンス変数であることに違いはありませんから、[下位]クラスのメソッドでは、普通にメッセージを送ることができます。それ以外に,外部からメッセージを送るには、次のような構文を用います。
myclass myobj \ オブジェクトを生成
[PUBLICIVARへのメッセージ]: IVAR> PUBLICIVAR1 in myobj
すこしcobolを憶わせます(詳しいことは知りません。見た目だけ(^^;)。ですが、英語的には意味が分かる感じですよね。
インスタンス変数を構造体にするときもやり方は全く同じで、構造体の一部分の要素だけをパブリックにすることもできます。
関連項目:
最終更新:2019年06月04日 21:41