• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Javaでのメンバー変数へのアクセスの仕組み)

Javaでのメンバー変数へのアクセスの仕組み

このQ&Aのポイント
  • Javaでのメンバー変数へのアクセスの仕組みについて質問です。
  • jythonの例では問題なく動作するが、同じようにJavaで書くとエラーが発生する場合、Javaで同様のことを実現する方法はあるのか。
  • Javaの経験が浅く、メンバー変数へのアクセスについて理解が不足しているため、教えていただきたい。

質問者が選んだベストアンサー

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

PythonとJavaの型システムに対する考え方の違いが原因です。 Javaでは、bar.hogeという式の型はHogeです。Hogeにはm1というメンバーが存在しないので当然コンパイルエラーになります。 コンパイル時にbar.hogeという式の型から判断するので、実行時にはbar.hogeにFooのインスタンスが代入されているなんてことは考慮しません。 bar.hogeに代入されているのがFooのインスタンスだと分かっているのなら、((Foo)(bar.hoge)).m1のようにキャストしてやればお望みの動作になると思います。

tempura234
質問者

お礼

なるほど、大変よくわかりました。ありがとうございます。Javaの型システムをもう少しきちんと整理してみようと思います。

関連するQ&A