- ベストアンサー
new クラス名(); が必要なとき 必要ないとき
class Sample { public static void main(String args[]) { Car car1; car1 = new Car(); Car car2; car2 = car1; car1 = null; ・・・・・・・ ・・・・・・・ ・・・・・・・ } } 途中省略してあるのですが、このようなソースコードがありました。 car2オブジェクトはなぜ宣言だけでいいのでしょうか? car1のように、new Car(); は何故必要ないのでしょうか?これで何故代入ができるのかわかりません。 どのようなときに、new クラス名(); が必要なのでしょうか? 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
car1,car2は、参照で、いわゆるCでいうポインタみたいなもので、newしたときに実体が作成されて、 car1 = new Car(); としたら、car1が、newで作成したオブジェクトを指すようになります。 car2 = car1; は、新たにコピーして代入されるというのではなく、 (新たにコピーして代入される場合もありますが) その単に参照先をコピーしたということで、 car1に対する操作とcar2に対する操作は同じになります。 >どのようなときに、new クラス名(); が必要なのでしょうか? 初期化する時(実体が必要な時)に、必要だと思います。
その他の回答 (1)
- RAPTsong
- ベストアンサー率42% (74/175)
この結果、car2 は car1 と同じ物を指していることになります。 実体は1つで、それを参照しているのが、car1 と car2 ということになります。 なお、car1 = new Car(); も代入文です。 new Car() で作成されたインスタンスを car1 に代入しています。
お礼
ありがとうございました。 >car1 = new Car(); も代入文です そうですよね。本にもそうありました。
お礼
あーなるほど、そういうことだったんですね。 ありがとうござました。