4

わかった。もしそうなら...

int x=3;
int y=5;


x=y;

ですよx=5ね?

よし、もしBA...のサブクラスなら

A a=new A();
B b=new B();

a=b;

^^^これがアップキャストと見なされるのはなぜですか?

「a」は「b」になるはずで、その逆ではありませんか? 誰かが私にこれをすべて説明できますか?

4

4 に答える 4

1
A a = new A();
B b = new B();

フローは次のとおりです。

  • A のオブジェクトは参照変数 a に ASSIGNED をnew A()使用して作成され、同様に B のオブジェクトはnew B()参照変数 b に ASSIGNED を使用して作成されます。
  • ここで注意すべき点は、評価は右側から左側に進むということです。そのため、最初に右側が計算され、結果がそれぞれの変数に割り当てられます。

今あなたの問題に来ています。それa=bがUPCAST​​INGの理由です

  • 上記の点はこのステートメントにも当てはまります。まず、a のサブクラスである b が評価されます。サブクラスをスーパークラスに割り当てているため、サブタイプからスーパータイプへの暗黙のキャストが行われますが、これはもちろん UPCAST​​ING です。

このリンクにより、より明確になります https://www.youtube.com/watch?v=Wh-WZXCAarY

お役に立てれば。

于 2015-03-14T05:22:08.257 に答える