

質問：UseBank.javaの6行目から１０行目がどのような動きになっているかを詳しく教えてください。

### Bank.java

[code]

     1:public class Bank{
     2:  private int money;
     3:  public void setMoney(int money) {
     4:    this.money = money;      //引く数をフィールドに代入
     5:  }
     6:  public int getMoney() {
     7:     return money;
     8:  }
     9:} 
    
[/code]

### UseBank.java

[code]

     1: pubulic class UseBank {
     2:   public static void main(Steing[] args) {
     3:    //クラス　Bankのインスタンス化
     4:      Bank bank = new Bank();
     5:      int mny = Integer.parseInt(args[0]);
     6:      bank.setMoney(mny);
     7:      System.out.println("振込額 : " + mny);
     8:    //bank.money = 0;    //エラーが発生します
     9:      int nowMoney = bank.getMoney();
    10:     System.out.println("現在の所持金 : " + nowmoney;
    11:   }
    12: } 
    
[/code]

### 実行結果

[code]

     >java Usebank 10000 
    
    振込額　: 10000
    現在の所持金 : 10000 
    
[/code]


CC BY-SA 4.0
2019-10-30T11:51:50.720
60128
2019-10-30T13:05:53.563
2019-10-30T12:36:00.930
19110
36421
question
java
下記コードの実行結果について


4行目で作成したBankクラスのインスタンスであるbankのmoneyプロパティに，5行目でparseしたmnyをセット（わかりやすく言うと代入みたいな）をしている．

[code]

    bank.setMoney(mny);
    
[/code]

5行目のmnyを表示．

[code]

    System.out.println("振込額 : " + mny);
    
[/code]

bankインスタンスのmoneyプロパティにはprivate修飾子がついているため直接アクセスは不可能．

[code]

    //bank.money = 0;    //エラーが発生します
    
[/code]

getterを介してbankインスタンスのmoneyを取得して変数nowMoneyを初期化．

[code]

    int nowMoney = bank.getMoney();
    
[/code]

nowMoneyを表示．

[code]

    System.out.println("現在の所持金 : " + nowmoney);
    
[/code]


CC BY-SA 4.0
2019-10-30T12:45:13.623
60130
2019-10-30T12:45:13.623
29506
60128
answer


わかりやすいように図にしてみました。まずは3行目の状態です。

[![画像の説明をここに入力](https://i.stack.imgur.com/2mhb2.png)](https://i.stack.imgur.com/2mhb2.png)

まだmainを実行したばかりなので何もないですね。（※
正確には、`args`という変数に、プログラムを実行したときのパラメータのデータが入っていますが、図では省略しています。）

では次に4行目、ここでbankを作っています。

[![画像の説明をここに入力](https://i.stack.imgur.com/zgRa6.png)](https://i.stack.imgur.com/zgRa6.png)

↑ bank変数の中に、Bankクラスが初期化されました。ちなみに青色の部分は、privateなので直接は見たり触ったりできません。

[![画像の説明をここに入力](https://i.stack.imgur.com/w6FMu.png)](https://i.stack.imgur.com/w6FMu.png)

↑ 5行目で、`args[0]`に入った `"10000"` という文字列を、`mny`という変数に`10000`という数値に変換して入れています。

[![画像の説明をここに入力](https://i.stack.imgur.com/6HqR6.png)](https://i.stack.imgur.com/6HqR6.png)

↑ 7行目は、`setMoney`メソッドを通じて、`bank`の`money`変数に`10000`をセットしています。

[![画像の説明をここに入力](https://i.stack.imgur.com/98TSr.png)](https://i.stack.imgur.com/98TSr.png)

↑ 最後に9行目で、`getMoney`メソッドを通じて、`bank`の`money`変数の値を、`nowMoney`変数にコピーしています。

なお、説明を省いた `System.out.println` は、画面に結果を表示するメソッドですね。


CC BY-SA 4.0
2019-10-30T13:05:53.563
60131
2019-10-30T13:05:53.563
17181
60128
answer