Javaの次のクラスについて考えてみます。
interface I{
}
class A implements I{
}
class B extends A {
}
class C extends B{
}
And the following declarations:
A a = new A();
B b = new B();
コードを取得したらa = (B)(I) b;
、コンパイルして実行します。そして、なぜ私がインターフェイスとクラスBにキャストする必要があるのか、まったく理解できません。私の意見では、問題がなければ機能しa = b;
ます。誰かが私にコードをうまく実行させる上記の明示的なキャストのロジックを説明できますか?
しかし、一度I i = (C) a;
取得すると、「a」はクラスCのオブジェクトを指さないため、実行時に失敗します。「a」がクラスCのオブジェクトを指す必要があるのはなぜですか?それに加えて、Cクラスにキャストするロジックがわかりません。とにかく、あなたはIインターフェースのリファレンスを持っているでしょう。よろしくお願いします