- ベストアンサー
宣言とは違うオブジェクトを作成???
初心者です、、、教えて下さいm_ _m 宣言したクラスと、実際に作成するオブジェクトが違うというのはどうゆう意味なんでしょうか? 例えば、 Sample01 s1 = new Sample02(); というような場合です…これの意味がわかりません。。。 というか宣言とは一体なんの役割があるのでしょうか? 宣言したクラスと作成するクラスが違うと矛盾などが起きたりしないのはどうしてなのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
Sample02クラスが、Sample01クラスを継承している場合、 Sample02インスタンスを、Sample01クラスとして宣言します。 しかし、継承関係にないばあいは、このコードはコンパイルエラーとなります。 継承関係にある場合は、変数宣言は親クラスでもできます。 これが、ポリモフィズムの特徴の一つです。 宣言したクラスと、インスタンス生成するクラスが違う場合、 この場合は、「矛盾」は起きません。 しかし、Sample01型で宣言したs1インスタンスでは、 Sample02でしか宣言されていないメソッドやプロパティは利用できません。 このあたりは、おそらく勉強されている参考書などにも記載されていると思います。 では、これで何が嬉しいかというと、 実は、メソッド内での利用だけではほとんどメリットはありません。 どういうシーンで利用されるかというと、 メソッドの引数や、ファクトパターンで最大限の威力を発揮します。 このあたりは、デザインパターンなどを勉強すると理解ができてくるでしょう。 もし、まだJavaの習い始めの段階なら、 こういうことが出来るんだと、頭の隅にでもあればいいと思います。
その他の回答 (1)
- linus1974
- ベストアンサー率19% (71/370)
Sample02クラスがSample01クラスを継承 しているなら問題ありません。 継承やポリモーフィズムについて 勉強しましょう。