すみません。でも俺は丸一日この文とにらめっこだよ。助けてほしい。

●前者と後者で違い
前者 メソッドをオーバーライドさせず、AAA()とBBB()でメソッド名が違う
後者 メソッドをオーバーライドさせ、メソッド名show()

●hoge2の結果
前者 BBB()メソッドは使用できない。
後者 オーバーライドされBBB()メソッドが優先される。

なぜなぜ?
>>34 のキャストすればできました。そうゆう対策は知らなかったし理解できました。
そうではなく、なぜこの問題が起こるのかが知りたいです。
これを理解するには宣言と生成の本質の理解が必要と思うんですが、
どこを調べても、宣言はメモリが・・・とかそんな説明ばっかです。