親を子にキャスト - 配列の奇妙な動作

石工

にキャストParentすることはできずChild、 にのみキャストできると思っていましChildParentまたは、少なくともそうした場合、子供の機能にアクセスすることは許可されません。

次に、Java で親を子に明示的にキャストできることがわかります。

a=(B)a;

しかし許さない

bArray[0]=a

または

a.testB();

しかし、これは大丈夫です:

bArray[1]=(B)a;

これもそうです:

bArray[1].testB();

誰かここで何が起こっているのか説明してもらえますか!? 親クラスに子クラスの機能を与えるにはどうすればよいですか? また、配列に a を配置する最初の試みが機能しないのに、2 回目の試行が機能するのはなぜですか? 同じでなくていいの?

class A {
    public void testA() {
    }
}

class B extends A {
    public void testB() {
    }
}

public class polymorphicObjects {
    public static void main(String[] args) {
        B bArray[] = new B[5];      
        A a = new A();
        A ab = new B();

        a = (B)a; //didnt think you could do this
        bArray[0] = a; //but if I can the why doesnt this work?
        a.testB();  //or this
        bArray[1] =(B)a; //but this does work
        bArray[1].testB(); //and so does this!? 
    }
}
SaxyPandaBear

ランニングはbArray[1].testB();本当に効果があるの?少なくとも ClassCastException がスローされるはずです。testB() メソッド内に print ステートメントを追加すると、これに役立ちます。

したがって、これでは、a = (B)a;どちらが a をタイプ B に非常に明示的にキャストしていると言ってますが、実際には何の意味もありません。

これを念頭に置いて、これはbArray[0] = a;明示的にキャストされていないため、最初の行では機能しません。したがって、コンパイラは一致しない型を指定していると文句を言います。

次の行でbArray[1] = (B)a;は、a がタイプ B であることをコンパイラーに明示的に伝えているので、メソッド testB() の呼び出しは実行時に失敗するはずですが、それはあなたに吠えません...

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

PHP:オブジェクト型を配列にキャストした後の奇妙な配列の動作

分類Dev

配列のリストでのContains()の奇妙な動作

分類Dev

膨大な配列を持つCodePenでの奇妙なJavaScriptの動作

分類Dev

C#LinqJSONネストされた配列の奇妙な動作

分類Dev

ネストされた配列操作の奇妙な動作、js

分類Dev

配列の初期化におけるPythonの奇妙な動作

分類Dev

配列の終わりを過ぎたNumpyの奇妙な動作

分類Dev

zshの「options」配列を使用したdeclare / typesetの奇妙な動作

分類Dev

cdkCdkDragDropを使用した2つの配列の奇妙な動作

分類Dev

論理配列を変更するときの奇妙な動作

分類Dev

strtokとfgetsを使用した奇妙な配列の動作

分類Dev

javascriptで配列を作成するときの奇妙な動作

分類Dev

配列を使用したコロン演算子の奇妙な動作

分類Dev

useStateを反応させる-useStateと配列の奇妙な動作

分類Dev

構造体の配列を初期化する奇妙な動作

分類Dev

(配列)型キャスト奇妙な動作オブジェクトから配列への変換

分類Dev

文字列データの派手な配列を初期化する奇妙な動作

分類Dev

奇妙な列挙子の動作(副作用?)

分類Dev

list <string>の配列、文字列の挿入は奇妙な動作をします

分類Dev

Cで文字列配列の要素を出力するときの奇妙な動作

分類Dev

親をその一般的な子にキャストする

分類Dev

配列文字列要素に対するPowerShellマッチングの奇妙な動作

分類Dev

2D配列を3D配列にネストするときの奇妙な動作

分類Dev

Javaで子を親の問題にキャストする

分類Dev

Java-配列での奇妙なジェネリックスの動作

分類Dev

char配列を単一のcharに割り当てるという奇妙な動作

分類Dev

データの配列で$ ampを使用するPHPstr_replaceの奇妙な動作

分類Dev

Array.prototype.fill()によって満たされた配列の奇妙な動作

分類Dev

JavaScriptで配列をループしているときの奇妙な動作

Related 関連記事

  1. 1

    PHP:オブジェクト型を配列にキャストした後の奇妙な配列の動作

  2. 2

    配列のリストでのContains()の奇妙な動作

  3. 3

    膨大な配列を持つCodePenでの奇妙なJavaScriptの動作

  4. 4

    C#LinqJSONネストされた配列の奇妙な動作

  5. 5

    ネストされた配列操作の奇妙な動作、js

  6. 6

    配列の初期化におけるPythonの奇妙な動作

  7. 7

    配列の終わりを過ぎたNumpyの奇妙な動作

  8. 8

    zshの「options」配列を使用したdeclare / typesetの奇妙な動作

  9. 9

    cdkCdkDragDropを使用した2つの配列の奇妙な動作

  10. 10

    論理配列を変更するときの奇妙な動作

  11. 11

    strtokとfgetsを使用した奇妙な配列の動作

  12. 12

    javascriptで配列を作成するときの奇妙な動作

  13. 13

    配列を使用したコロン演算子の奇妙な動作

  14. 14

    useStateを反応させる-useStateと配列の奇妙な動作

  15. 15

    構造体の配列を初期化する奇妙な動作

  16. 16

    (配列)型キャスト奇妙な動作オブジェクトから配列への変換

  17. 17

    文字列データの派手な配列を初期化する奇妙な動作

  18. 18

    奇妙な列挙子の動作(副作用?)

  19. 19

    list <string>の配列、文字列の挿入は奇妙な動作をします

  20. 20

    Cで文字列配列の要素を出力するときの奇妙な動作

  21. 21

    親をその一般的な子にキャストする

  22. 22

    配列文字列要素に対するPowerShellマッチングの奇妙な動作

  23. 23

    2D配列を3D配列にネストするときの奇妙な動作

  24. 24

    Javaで子を親の問題にキャストする

  25. 25

    Java-配列での奇妙なジェネリックスの動作

  26. 26

    char配列を単一のcharに割り当てるという奇妙な動作

  27. 27

    データの配列で$ ampを使用するPHPstr_replaceの奇妙な動作

  28. 28

    Array.prototype.fill()によって満たされた配列の奇妙な動作

  29. 29

    JavaScriptで配列をループしているときの奇妙な動作

ホットタグ

アーカイブ