2010年5月30日日曜日

Java 変数のクラス型で使えるメンバが決まる


 図のように、FriendクラスはMemberクラスのサブクラスです。このとき、Friend型のオブジェクトを作成してその参照をMember型の変数に代入した結果について考えます。
 Friendクラスにはageフィールドが追加されています。また、setメソッドをオーバーロードしています。このとき、Friend型のオブジェクトを作成して、その参照をスーパークラスのMember型の参照変数mに代入しています。このときmが参照できるオブジェクトの範囲はFriend型オブジェクトがMember型から継承した部分だけです。図に示すように、それ以外の部分は、変数mを使ってアクセスすることはできません。例えば、m.set("田中",21);などとするとコンパイルエラーになります。

アクセスできるメンバは変数のクラス型による
  • オブジェクトが何型であっても、どのメンバにアクセスできるかは変数のクラス型によって決定される

0 件のコメント:

コメントを投稿