###Javaオリジナル問題作成1の続きです。
#7章(オブジェクト指向をはじめよう)、8章(インスタンスとクラス)
■問題1
Heroクラスを作成。name(String型),hp(int型)のフィールドを準備し、以下のメソッド作成。
メソッド名:sit
戻り値:なし
引数リスト:int sec
処理内容:
・自分自身のhpフィールドに引数(sec)をたす。
・自分自身のnameフィールドを表示。(表示形式:nameフィールド+は+引数(sec)+秒座った。)
・引数(sec)を表示。(表示形式:HPが+引数(sec)+ポイント回復した。)
Mainクラスを作成。Heroインスタンスを生成。
nameフィールド:カズヤ(自身の名前)
hpフィールド:100
表示内容:
・sitメソッドを呼び出してください。(引数は5)
・hpフィールドを表示してください。
解答
//問題1
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
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章(カプセル化)
■問題1
testパッケージ作成してください。(以下のすべてのクラスはここに格納)
Testクラスを作成し、name(String型)、age(int型)フィールドを作成してください。(アクセス修飾子 private)
name,ageフィールドのgetter,setterを作成してください。
Mainクラスを作成し、Testクラスのname、ageフィールドに値をセットしてください。(値はname(自分の名前),age(自分の年齢))
name、ageフィールドにセットした値を表示させてください。
(表示形式:年齢は+name(自分の名前)+歳です)
(表示形式:名前は+age(自分の年齢)+です)
■問題2
Heroクラス作成し、hp(int型)のフィールド,Hero(コンストラクタ)を作成してください。※コンストラクタ(中身:this.hp=100;)
Main1クラスを作成し、h1,h2のhpを画面に表示させてください。(今回は100が2つ表示されているとOKです。)
解答
//問題1
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歳です
名前はカズヤです
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;
}
}
//問題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
package test;
public class Hero {
int hp;
Hero() {
this.hp = 100;
}
}
#11章(継承)
■問題1
herosパッケージ作成してください。(以下のすべてのクラスはここに格納)
Heroクラス作成し、attackメソッド(内容:攻撃)、runメソッド(内容:逃げる)を追加してください。
SuperHeroクラス(Heroクラスを継承)を作成し、
flyメソッド(内容:飛ぶ)、landメソッド(内容:着地)を追加してください。
Mainクラス作成し、Herokuクラスのrunメソッドを呼び出してください。
「逃げる」が表示されればOKです。
■問題2(問題1続き)
問1のSuperHeroクラス、runメソッドをオーバーライドさせてください。(内容:スーパーヒーローが逃げた)
Mainクラスからrunメソッドを呼び出し、「スーパーヒーローが逃げた」が表示されればOKです。
■問題3(問題2続き)
Mainクラスから
SuperHeroクラスのrunメソッド(内容:スーパーヒーローが逃げた)とHeroクラスのrunメソッド(内容:逃げる)を呼び出してください。
解答
//問題1
package heros;
public class Main {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
SuperHero s = new SuperHero();
s.run();
}
}
//実行結果
逃げる
package heros;
public class Hero {
public void attack() {
System.out.println("攻撃");
}
public void run() {
System.out.println("逃げる");
}
}
package heros;
public class SuperHero extends Hero {
public void fly() {
System.out.println("飛ぶ");
}
public void land() {
System.out.println("着地");
}
}
//問題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("スーパーヒーローが逃げた");
}
}
//実行結果
スーパーヒーローが逃げた←問題1で使ったMain.javaを実行すると実行結果が出てくる。
//問題3
package heros;
public class Main {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
SuperHero s = new SuperHero();
s.run();
s.go();
}
}
//実行結果
スーパーヒーローが逃げた
逃げる
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
###次回に続く