Javaオリジナル問題作成2（Java入門編：スッキリわかるJava）

###Javaオリジナル問題作成1の続きです。

#7章（オブジェクト指向をはじめよう）、8章（インスタンスとクラス）
■問題１
Heroクラスを作成。name(String型),hp(int型)のフィールドを準備し、以下のメソッド作成。
メソッド名：sit
戻り値：なし
引数リスト：int sec
処理内容：
・自分自身のhpフィールドに引数(sec)をたす。
・自分自身のnameフィールドを表示。（表示形式：nameフィールド＋は＋引数(sec)＋秒座った。）
・引数(sec)を表示。（表示形式：HPが＋引数(sec)＋ポイント回復した。）

Mainクラスを作成。Heroインスタンスを生成。
nameフィールド：カズヤ(自身の名前)
hpフィールド：100
表示内容：
・sitメソッドを呼び出してください。（引数は5）
・hpフィールドを表示してください。

解答

```java:Main.java
//問題１
package hero1;

public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Hero h = new Hero();

		h.name = "カズヤ";
		h.hp = 100;

		h.sit(5);
		System.out.println(h.hp);
	}
}


//実行結果
カズヤは5秒座った
HPが5ポイント回復した。
105


```

```java:Hero.java
package hero1;

public class Hero {
    public String name;
    public int hp;


    public void sit(int sec) {
            this.hp += sec;
            System.out.println(this.name + "は" + sec + "秒座った");
            System.out.println("HPが" + sec + "ポイント回復した。");

    }
}
```

#9章（さまざまなクラス機構）、10章（カプセル化）
■問題１
testパッケージ作成してください。（以下のすべてのクラスはここに格納）
Testクラスを作成し、name(String型)、age(int型)フィールドを作成してください。(アクセス修飾子 private)
name,ageフィールドのgetter,setterを作成してください。
Mainクラスを作成し、Testクラスのname、ageフィールドに値をセットしてください。（値はname(自分の名前),age(自分の年齢)）
name、ageフィールドにセットした値を表示させてください。
（表示形式：年齢は＋name(自分の名前)＋歳です）
（表示形式：名前は＋age(自分の年齢)＋です）


■問題２
Heroクラス作成し、hp(int型)のフィールド,Hero(コンストラクタ)を作成してください。※コンストラクタ（中身：this.hp=100;）
Main1クラスを作成し、h1,h2のhpを画面に表示させてください。(今回は100が２つ表示されているとOKです。)



解答

```java:Main.java
//問題１
package test;

public class Main {

        public static void main(String[] args) {
                // TODO 自動生成されたメソッド・スタブ
               Test h = new Test();

               h.setAge(26);
               h.setName("カズヤ");

               System.out.println("年齢は"+h.getAge()+"歳です");
               System.out.println("名前は"+h.getName()+"です");
        }
}



//実行結果
年齢は26歳です
名前はカズヤです
```

```java:Test.java
package test;

public class Test {

	private String name;

	private int age;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
}

```

```java:Main.java
//問題2
package test;

public class Main1 {

        public static void main(String[] args) {
                // TODO 自動生成されたメソッド・スタブ
                Hero h = new Hero();
                Hero h1 = new Hero();

                System.out.println(h.hp);
                System.out.println(h1.hp);

        }

}



//実行結果
100
100

```
```java:Hero.java
package test;

public class Hero {
        int hp;

        Hero() {
                this.hp = 100;

        }
}

```

#11章（継承）
■問題１
herosパッケージ作成してください。（以下のすべてのクラスはここに格納）
Heroクラス作成し、attackメソッド（内容：攻撃）、runメソッド（内容：逃げる）を追加してください。
SuperHeroクラス(Heroクラスを継承)を作成し、
flyメソッド（内容：飛ぶ）、landメソッド（内容：着地）を追加してください。
Mainクラス作成し、Herokuクラスのrunメソッドを呼び出してください。
「逃げる」が表示されればOKです。

■問題２（問題１続き）
問１のSuperHeroクラス、runメソッドをオーバーライドさせてください。（内容：スーパーヒーローが逃げた）
Mainクラスからrunメソッドを呼び出し、「スーパーヒーローが逃げた」が表示されればOKです。

■問題３（問題２続き）
Mainクラスから
SuperHeroクラスのrunメソッド(内容：スーパーヒーローが逃げた)とHeroクラスのrunメソッド(内容：逃げる)を呼び出してください。

解答

```java:Main.java
//問題１
package heros;

public class Main {

        public static void main(String[] args) {
                // TODO 自動生成されたメソッド・スタブ
                SuperHero s = new SuperHero();
                s.run();
        }
}




//実行結果
逃げる
```

```java:Hero.java
package heros;

public class Hero {
        public void attack() {
                System.out.println("攻撃");
        }

        public void run() {
                System.out.println("逃げる");

        }
}

```
```java:SuperHero.java
package heros;

public class SuperHero extends Hero {
        public void fly() {
                System.out.println("飛ぶ");
        }

        public void land() {
                System.out.println("着地");
        }
}

```

```java:SuperHero.java
//問題2
package heros;

public class SuperHero extends Hero {
        public void fly() {
                System.out.println("飛ぶ");
        }

        public void land() {
                System.out.println("着地");
        }

        public void run() {
                System.out.println("スーパーヒーローが逃げた");
        }
}





//実行結果
スーパーヒーローが逃げた←問題１で使ったMain.javaを実行すると実行結果が出てくる。

```
```java:SuperHero.java
//問題3
package heros;

public class Main {

        public static void main(String[] args) {
                // TODO 自動生成されたメソッド・スタブ
                SuperHero s = new SuperHero();
                s.run();
                s.go();
        }
}




//実行結果
スーパーヒーローが逃げた
逃げる

```



```java:SuperHero.java

package heros;

public class SuperHero extends Hero {
        public void fly() {
                System.out.println("飛ぶ");
        }

        public void land() {
                System.out.println("着地");
        }

        public void run() {
                System.out.println("スーパーヒーローが逃げた");
        }

        public void go() {
                super.run();
        }
}

```




[Javaオリジナル問題作成1（Java入門編：スッキリわかるJava](https://qiita.com/freelanceradiation/items/2e24cd4f00de7796d807)

###次回に続く


[Javaオリジナル問題作成3（Java入門編：スッキリわかるJava](https://qiita.com/freelanceradiation/items/1df4fdca6fc12fa8eeb6)

[Javaオリジナル問題作成4（Java入門編：スッキリわかるJava](https://qiita.com/freelanceradiation/items/a48febf59c95ec186ca3)