JavaプログラマBronze SE 7/8より
class A {}
class B extends A {}
class Test {
public static void main(String[] args){
A a = new A();
B b = (B)a;
}
}
このコードのコンパイル結果を求める問題で、回答が実行時エラーだったのですが、解説を読んでもいまいち理解できません。
継承により、キャストできないなどのルールがあるのでしょうか?
解説としては、
BクラスAクラスを継承しています。したがって6行目はコンパイルに成功しますが、a変数に代入しているのは5行目のAクラスのオブジェクトです。したがって実行時にエラーが発生します
とあります
どこにある「解説」でしょうか。
前提や背景は具体的に記載してください。
あと、コードはマークダウンでご提示ください。
コンパイルエラーになるものの解説など読む必要はないでしょう。
解説が書かれていないので、なにが理解できないのか答えられないですが・・・
AのインスタンスをBへキャストすることはできません。
どうしてコンパイルエラーになるのかが分からない感じですか?
その解説が理解出来ないにしてもその解説の何がわからないかを説明を記載して頂かないとお答えが難しいです。
恐らくOracle認定資格 Java SE Silverとかの問題だと思うのですが、出典は明示しましょう。
> 解説を読んでもいまいち理解できません。
> A
選択肢「A」が正解、などと言う意味で記載されているのかもしれませんが、この質問を読んでいる誰にも分かりません。
出典明示してください。
内容に間違いがあればそれを出版元へ指摘しなければ間違った状態のまま広まることになります。

回答2件
あなたの回答
tips
プレビュー







