- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:変数を引数に取る??)
Javaの勉強中に気になるコードの部分について質問です
このQ&Aのポイント
- Javaの勉強中の初心者が、「やさしいJava」P481のソースコードについて質問です。
- 地点1-1では、DriverクラスのコンストラクタでCompanyクラスの変数cを仮引数に取り、地点2ではDriverクラスのオブジェクトdrv1を作成し、引数にCompanyクラスの変数cmpを代入しています。
- なぜメソッドの引数に変数を取るのか、またcompとcmpの違いについて教えてほしいとのことです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
地点1-1でのcはメソッド内(ここではコンストラクタ)だけの ローカルな変数になるので、コンストラクタの処理が終わると cは保持されません。 しかし地点1-2でのcompは、Driverクラスのプロパティなので、 Driverクラス(ここでは地点2およびその次の行でnewしたもの)が 保持されている間は保持されることになります。 ここではDriverクラスにCompanyクラスを保持してもらいたいのです。 そのためのメソッド(ここではコンストラクタ)を呼んでいますが、 仮引数cは、その処理上に生じた一時的な変数です。 このソースの主題は、Driverオブジェクトをを2つ作ったが、 それらが保持しているCompanyオブジェクト(cmp)は同一なので、 drv1/drv2が各々でaddを50円で3回ずつ呼んだとしても、 drv1は150円、drv2は150円、ではなく、300円になる、 ということかと思います。
お礼
大変遅れました。 ぼんやりながら理解できたと思います。 また質問させていただくかもしれません、 ありがとうございました!!