プログラミング初心者です。
今、クラス型変数をメソッドの引数として利用することを学んでいます。そこで疑問なんですが、
どうしてWizardクラスの 「 void heal(Hero h) 」は(Hero h)でMainクラスの「w.heal(h1);」「 w.heal(h2);」の(h1),(h2)を受け取れるのですか?
public class Main { public static void main(String[] args) { Hero h1 =new Hero(); h1.name ="ミナト"; h1.hp = 100; Hero h2 = new Hero(); h2.name = "アサカ"; h2.hp = 100; WIzard w = new WIzard(); w.name = "スガワラ"; w.hp = 50; w.heal(h1); w.heal(h2); } }
public class Hero { String name; int hp; }
public class WIzard { String name; int hp; void heal(Hero h) { h.hp += 10; System.out.println(h.name + "のHPを10回復した"); } }
僕はてっきりw.heal(h1);を呼んで(h1)を渡すなら
public class WIzard { String name; int hp; void heal(Hero h1) { h1.hp += 10; System.out.println(h1.name + "のHPを10回復した");
こうしなきゃいけないと思ったのですが。ちなみに実行は出来ました。
インスタンスは独立していて、newした数だけ別々のインスタンスが生まれるなら、h1なのかh2なのか書かないといけないと思ったのですが、
なぜ「void heal(Hero h)」でも実行できるのでしょうか?
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/11/01 05:15