どういう思想に基づいてそうなっているのでしょうか?
Javaならこんなときでも子クラスのメソッドが呼ばれるはず。このほうがしっくりくる。
C#はvirtualとかoverrideと書かねばならぬのも記憶のコストがかかって嫌い。