実現したいこと
回答の実行結果になる理由が知りたい。
前提
教科書の例題を解いています
私はこのプログラムの出力結果が 「25:35」になると思ったのですが、正解は「25:25」でした。
該当のソースコード
java
1// Thiefクラス 2public class Thief{ 3 String name; 4 int hp; 5 int mp; 6 7 public Thief(String name, int hp, int mp){ 8 this.name = name; 9 this.hp = hp; 10 this.mp = mp; 11 12 } 13 14 public Thief(String name, int hp){ 15 this(name, hp, 5); 16 } 17}
java
1// Mainクラス 2public class Main{ 3 public static void heal(int hp){ 4 hp += 10; 5 } 6 7 public static void main(String[] args){ 8 int baseHp = 25; 9 Thief t = new Thief("アカ", baseHp); 10 heal(baseHp); 11 System.out.println(baseHp + " : " + t.hp); 12 } 13}
試したこと
baseHpに25が出力されることは分かるのですが、t.hpはThiefクラスのコンストラクタからhpのフィールドに25が入れられ、healメソッドでhpが25+10=35になって出力されるのだと考えました。
しかし、答えの25が出力されると考えるとhealメソッドのhpはローカル変数としてhpを、t.hpはインスタンスとしてのhpを示しているので、ローカル変数としてのhpは35になるが、t.hpは35にはならずそのまま25になるのだと考えました。
このような認識であっているのでしょうか。
プログラミング初心者の質問ですみません。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2025/03/26 02:14