>>590

> >>586-589
> ありがとうございます
>
> 難しいですね
> 確かにその辺りの理解はあやふやになっています…
>
> 結局、先の例では、スーパークラスA型の変数aがサブクラスB型のインスタンスbを
> 参照する時、Bでオーバーライドした(元々Aで定義されている)メソッドは、
> Bに基づく動作内容で呼ぶことになり、Bで新しく定義した(Aにはない)メソッドは
> aからは呼べなくなるってことですよね?

大体合ってると思う
ただ、> スーパークラスA型の変数aがサブクラスB型のインスタンスbを の部分が違う気がする

あまり詳しくはないけど、まずnewで生成したオブジェクトのアドレスに相当するものがaに入る
そして、そのオブジェクトの動きはnewした方のクラスから見たものになる
だけど、動かすことのできるメソッド等は「親クラスにあるものだけ」になるね

継承した後のクラスは直接動かせない
もちろん、メソッド内で間接的に呼び出すとかなら可能だけど

簡単に言えば、mainメソッドとかのオブジェクトを動かす方からすれば「親の方で考える」ってこと
上のやつだとAの方にあるものだけ使える

デザインパターンのFactoryパターンのように、生成するメソッドで生成するって考えるとわかるかも