>>726
Dog dog = new ShibaDog(); と書いた場合は dog が ShibaDog クラスのインスタンスを
指してはいるが dog は Dog クラスとしてしか扱えない。つまり Dog クラスで定義されていて
アクセス可能になっているメソッドや変数にしかアクセスできない。

このようにすると折角新たな機能を追加したのにそれが使えなくなるために損をしたかの
ように見えるかも知れない。しかし他の Dog クラスまたは Dog クラスを継承したクラスの
インスタンスでも同じ Dog クラスとして扱えるという利点がある。

すると例えば Dog クラスの配列やリストを作って ShibaDog やその他色々な Dog クラスを
継承したクラスのインスタンスを要素として代入して同列に扱う事が出来たり、Dog クラスの
インスタンスを引数とするメソッドを書けば Dog クラスのインスタンスだけでなく Dog クラスを
継承したクラスのインスタンス(今回の話の場合は ShibaDog のインスタンス) であっても
受け付けられる。