-2
Object a=new Object();
Orange o=(Orange)a;


Orange orange=new Orange();

o とオレンジはどちらも異なる方法で固定されています。彼らは同じように振る舞いますか?(Orange クラスのすべてのインスタンス メソッドとフィールドを呼び出すことができます)

4

4 に答える 4

8

いいえa、オレンジではありません。オブジェクト型です。Orange にダウンキャストすることはできません (実行時エラー)。そうではないからです。

orangeオレンジです。これは (キャストせずに) 割り当てるか、Object 型にすることができ、その後 Orange にキャストすることができます。実際の参照 (実行時)Orange のインスタンスであるためです。

Java インスタンス タイプは、コンストラクターが呼び出される作成時に設定されます。オブジェクトの実際のタイプを別のものに変更する可能性はありません。

于 2013-05-16T10:35:54.757 に答える
2

まず、次の行はClassCastException

Orange o=(Orange)a;

o とオレンジはどちらも異なる方法で固定されています。彼らは同じように振る舞いますか?(Orange クラスのすべてのインスタンス メソッドとフィールドを呼び出すことができます)

答え: いいえ。orangeは のオブジェクトでありOrangeaObject

于 2013-05-16T10:39:24.970 に答える
1

ClassCastExceptionhereを取得します。 にダウンキャストするOrange o=(Orange)aことはできません。ObjectOrange

あなたはそれを行うことができます

Object a=new Orange();
Orange o=(Orange)a;
于 2013-05-16T10:40:45.700 に答える
1

このコードを実行しようとしましたか? ClassCastException をスローします

于 2013-05-16T10:46:49.137 に答える