回答編集履歴

1 誤字

swordone

swordone score 17327

2016/09/05 00:09  投稿

B型のbをC型にキャスト使用としていますが、**BとCに継承関係はありません。**なので、実行前にキャストが不可能なことが確定しています。そのため、コンパイルエラーとなるのです。
B型のbをC型にキャストしようとしていますが、**BとCに継承関係はありません。**なので、実行前にキャストが不可能なことが確定しています。そのため、コンパイルエラーとなるのです。
A型をC型にキャストしようとするのは、AとCには継承関係があるためコンパイルエラーにはできませんが、A型としたオブジェクトがCクラスのインスタンスではなかった場合、ClassCastExceptionが発生するのです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る