練習問題
2.7 練習問題
本章で習った内容を元に練習問題を解いてください。
問1 次の設問①~⑤について○か×で答えなさい。
設問
① クラスは必ず「フィールド変数」と「メソッド」を定義しなければならない。
② クラスは型として使用できオブジェクト変数を定義できる。
③ オブジェクト変数にはnew演算子で生成された、オブジェクト自身のデータがそのまま代入される。
④ Javaプログラムのデータの型は、大きく分けると基本データ型と参照型の2種類が存在する。
⑤ thisキーワードでメンバにアクセスする場合、処理内容は変わらないので記述しない方がよい。
問2 以下のメンバをもつクラスPerson01.javaを定義しなさい。
フィールド変数
①文字列型 name //名前
②整数型 age //年齢
メソッド
①メソッド名:showPerson
戻り値:無し 引数:無し
処理内容:画面に「この人の名前はnameで、年齢はage歳です。」と表示する。
※nameとageはフィールド変数の値になります。
問3 以下の仕様を持つPractice0201.javaを作成し、実行結果になるようにmainメソッドの処理を作成しなさい。問2で作成したPerson01クラスをコピーしたPerson02クラスを作成し、Practice0201.java内に記述して下さい。
実行結果
① Person02クラスよりオブジェクトを2つ生成する。その際のオブジェクト変数名はperson1とperson2とする。
② ①で生成した個々のオブジェクトのフィールド変数に、実行結果になる値を設定します。
③ オブジェクト内のshowPersonメソッドにアクセスし、個々の結果を画面に表示する。
① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch02exercise
③ 名前: Practice0201
④ 作成するメソッド・スタブの選択: public static void main(String[] args) にチェックを入れる
package jp.co.f1.basic.ch02exercise; class Person02 { String name; // 名前 int age; // 年齢 // フィールド変数の値を画面にメッセージとして出力する public void showPerson() { System.out.println("この人の名前は" + this.name + "で、年齢は" + this.age + "歳です。"); } } public class Practice0201 { public static void main(String[] args) { // Person02オブジェクトを2つ作成 // ①の仕様を記述 // 個々のオブジェクトのフィールド変数に値を設定 // ②の仕様を記述 // メソッドにアクセスし個々の結果を表示する // ③の仕様を記述 } }
問4 問2で作成したクラスPerson01.javaに、以下の仕様のメソッドを追加したPerson03.javaを作成しなさい。
メソッド
① メソッド名:setName
戻り値:無し 引数:String name
処理内容:引数nameの値をフィールド変数nameに格納する。
② メソッド名:setAge
戻り値:無し 引数:int age
処理内容:引数ageの値をフィールド変数ageに格納する。
③ メソッド名:getName
戻り値:String 引数:無し
処理内容:フィールド変数nameの値を返す。
④ メソッド名:getAge
戻り値:int 引数:無し
処理内容:フィールド変数ageの値を返す。
※thisキーワードを必ず使用してください。
① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch02exercise
③ 名前: Person03
package jp.co.f1.basic.ch02exercise; public class Person03 { String name; // 名前 int age; // 年齢 // フィールド変数の値を画面にメッセージとして出力する public void showPerson() { System.out.println("この人の名前は" + this.name + "で、年齢は" + this.age + "歳です。"); } // メソッド① public void setName(String name) { // ここに処理を記述 } // メソッド② public void setAge(int age) { // ここに処理を記述 } // メソッド③ public String getName() { // ここに処理を記述 } // メソッド④ public int getAge() { // ここに処理を記述 } }
問5 以下のPractice0202.javaを実行すると、結果がどうなるか選択肢より選んで答えなさい。
選択肢
a. 「この人の名前は神田太郎で、年齢は30歳です。」が表示される。
b. 実行時エラーになりエラーメッセージが表示される。
c. 「null」が表示される。
d. コンパイルエラーになり実行できない。
① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch02exercise
③ 名前: Practice0202
④ 作成するメソッド・スタブの選択: public static void main(String[] args) にチェックを入れる
package jp.co.f1.basic.ch02exercise; class Person04 { String name; // 名前 int age; // 年齢 // フィールド変数の値を画面にメッセージとして出力する public void showPerson() { System.out.println("この人の名前は" + this.name + "で、年齢は" + this.age + "歳です。"); } } public class Practice0202 { public static void main(String[] args) { // Person04オブジェクトを作成 Person04 person = new Person04(); // オブジェクトに値を設定 person.name = "神田太郎"; person.age = 30; // オブジェクト変数にnullを代入 person = null; // メソッドにアクセスし個々の結果を表示する person.showPerson(); } }
問6 以下のPractice0203.javaを実行すると、画面に結果がどのように表示されるか答えなさい。
① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch02exercise
③ 名前: Practice0203
④ 作成するメソッド・スタブの選択: public static void main(String[] args) にチェックを入れる
package jp.co.f1.basic.ch02exercise; class Person05 { String name; // 名前 int age; // 年齢 // フィールド変数の値を画面にメッセージとして出力する public void showPerson() { String name = "山田花子"; int age = 25; System.out.println("この人の名前は" + name + "で、年齢は" + age + "歳です。"); } } public class Practice0203 { public static void main(String[] args) { // Person05オブジェクトを作成 Person05 person = new Person05(); // オブジェクトに値を設定 person.name = "神田太郎"; person.age = 30; // メソッドにアクセスし個々の結果を表示する person.showPerson(); } }