まず、宣言された型の意味を明確にしましょう。SuperBoss がクラス Boss のスーパークラスであるとします。
SuperBoss mrBond = new Boss();
SuperBoss は宣言された型で、Boss は実際の型です。
個人的には、次の実行時例外により、宣言された型が実行時に変更されると思います。
SuperBoss mrWayne = new SuperBoss();
((Boss)mrWayne).randomMethod();
//Exception: java.lang.ClassCastException: SuperBoss cannot be cast to Boss
これは些細なことに思えるかもしれませんが、私は次の四半期に家庭教師をする予定であり、学生に間違ったことを教えたくありません. そして、私の教授と彼女の助手は、この四半期について互いに同意しませんでした. 私の教授は、キャストによって、単一のステートメントの実行時に宣言された型が実際に完全に変更されると考えています。TA は、実行時にキャストがチェックされるだけで、実際には宣言された型を変更しないと強く信じていました。