"継承(Inheritance)"というのは、上位にあるクラスの特性を下位にあるクラスが受け継ぐことです。ここでは、Mopsにおける
インスタンス変数の継承を説明します。
インスタンス変数の宣言は、そのクラスのインスタンスが持つべきデータ構造を決めます。そして、これは、全て、下位クラスにそのまま継承されます。ですから、下位クラスのインスタンスは、上位クラスのインスタンスと同じ構造のデータ領域部分と、同じ名前の
インスタンス変数を必ず持つことになります。下位クラスで新たに宣言された
インスタンス変数は、継承されたデータに追加されることになります。ですから、下位クラスの
インスタンス変数として、上位クラスに既にある
インスタンス変数と同じ名前の変数を宣言することはできません。
インスタンス変数の性質も、そのまま継承されます。つまり、プライベート/パブリック/スタティックという性質もまた、そのまま保存されます。これらの性質を変えたり、継承をしないという設定をしたりすることは、Mopsではできません。
少し注意が必要なのは、スタティック変数です。これも継承されますが、下位クラス固有のスタティック変数が生成されるわけではありません。この"継承"は、下位クラスからもアクセスできるという意味で、
スタティックインスタンス変数は上位と下位で一つのものを共有することになります。
なお、クラスの上位下位関係は,もちろん、クラス定義の最初の行で"super{ 上位クラス名 }"と指定することで決まります。また、本文でいう、上位-下位は、"super{ ... }"で指定される直近の上位-下位関係には限られず、OBJECTクラスを水源とする継承の流れの中での、より上流とより下流という意味です。
関連項目:
最終更新:2018年12月22日 19:01