Object a=new Object();
Orange o=(Orange)a;
Orange orange=new Orange();
o とオレンジはどちらも異なる方法で固定されています。彼らは同じように振る舞いますか?(Orange クラスのすべてのインスタンス メソッドとフィールドを呼び出すことができます)
Object a=new Object();
Orange o=(Orange)a;
Orange orange=new Orange();
o とオレンジはどちらも異なる方法で固定されています。彼らは同じように振る舞いますか?(Orange クラスのすべてのインスタンス メソッドとフィールドを呼び出すことができます)
いいえa
、オレンジではありません。オブジェクト型です。Orange にダウンキャストすることはできません (実行時エラー)。そうではないからです。
orange
オレンジです。これは (キャストせずに) 割り当てるか、Object 型にすることができ、その後 Orange にキャストすることができます。実際の参照 (実行時)はOrange のインスタンスであるためです。
Java インスタンス タイプは、コンストラクターが呼び出される作成時に設定されます。オブジェクトの実際のタイプを別のものに変更する可能性はありません。
まず、次の行はClassCastException
Orange o=(Orange)a;
o とオレンジはどちらも異なる方法で固定されています。彼らは同じように振る舞いますか?(Orange クラスのすべてのインスタンス メソッドとフィールドを呼び出すことができます)
答え: いいえ。orange
は のオブジェクトでありOrange
、a
はObject
ClassCastException
hereを取得します。 にダウンキャストするOrange o=(Orange)a
ことはできません。Object
Orange
あなたはそれを行うことができます
Object a=new Orange();
Orange o=(Orange)a;
このコードを実行しようとしましたか? ClassCastException をスローします