以下コードについての質問です。クラスとインスタンスの動きが理解できません。
①についてです。
こちらがerrorになるのはなぜでしょうか?
変数hはSuperHeroクラスのインスタンス化しているので、
SuperHeroのメソッドが使えるのではないでしょうか?
②についてです。
逆にこちらが正しく出力される意味がわかりません。
型はインスタンスと必ず合わせる必要があるってことですかね?
③
こちらの出力結果が「ミナトは逃げ出した!」になる理由がわかりません。
・そもそもインスタンスを生成しただけで、Mainメソッドで変数nameを指定していないのになぜミナトとでるのか?
そもそもSuperHeroクラスのインスタンスなのに、なぜ継承先のnameが呼ばれるのか?
読み込み順は
「自分のクラス」 → なければ → 「親クラス」
ではないのでしょうか?
Mainメソッド(メインクラス)
public class Main { public static void main(String[] args) { Hero h = new SuperHero(); // ① h.fly(); SuperHero sh = new SuperHero(); // ② sh.fly(); sh.run(); ③ } }
ヒーロークラス
public class Hero { String name = "ミナト"; int hp = 100; // 戦う public void attack(Matango m) { System.out.println(this.name + "の攻撃!"); m.hp -= 5; System.out.println("5ポイントのダメージを与えた!"); } // 逃げる public void run() { System.out.println(this.name + "は逃げ出した"); } }
スーパーヒーロークラス
public class SuperHero extends Hero { String name = "コンマ"; int hp = 100; boolean filying; // 飛ぶ public void fly() { this.filying = true; System.out.println("飛び上がった!"); } // 着地 public void lang() { this.filying = false; System.out.println("着地した!"); } }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。