練習問題

4.5 練習問題

本章で習った内容を元に練習問題を解いてください。

問1 次の設問①~⑤について○か×で答えなさい。

設問
① クラス内に定義できるものにはフィールド、メソッドの他にコンストラクタがある。
② コンストラクタの名前は自由につけることができ、戻り値も設定できる。
③ コンストラクタにはアクセス修飾子をつけることができない。
④ デフォルトコンストラクタの呼び出し方は、引数なしのコンストラクタと同じである。
⑤ デフォルトコンストラクタは、コンストラクタを定義していても使用することができる。

問2 以下に示すBooksクラスのコンストラクタ定義の誤りを3つ答えなさい。

ソースコード

① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch04exercise
③ 名前: Books

1package jp.co.f1.basic.ch04exercise;
2 
3public class Books {
4  String title;
5  int price;
6 
7  // コンストラクタ
8  public void Book(String title, int price) {
9    this.title = price;
10    this.price = title;
11    System.out.println("この本のタイトルを" + title + "、金額を" + price + "にしました。");
12  }
13}

問3 以下のフィールドを持つクラス「Score1.java」の、初期化を行う引数なしのコンストラクタを定義しなさい。Stringはnull、int(配列も同様)は0、doubleは0.0を初期値とする。

ソースコード

① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch04exercise
③ 名前: Score1

1package jp.co.f1.basic.ch04exercise;
2 
3public class Score1 {
4  String name; // 名前
5  int[] score = new int[5]; // 5教科の点数格納用配列
6  int total; // 合計点
7  double ave; // 平均点
8}

問4 問3で示したフィールドのみのクラス「Score1.java」に、引数ありのコンストラクタを定義した「Score2.java」を作成しなさい。

コンストラクタ仕様
  • 引数は以下の4つを定義する。
    第1引数:String name第2引数:int[] score 第3引数:int total 第4引数:double ave

  • 引数の値をそのまま対応するフィールドへ設定する。但し配列scoreは1つずつ値を取得して設定する。
    例 this.score[0] = score[0];←例を繰り返し文で配列要素数分行う。

ソースコード

① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch04exercise
③ 名前: Score2

1package jp.co.f1.basic.ch04exercise;
2 
3public class Score2 {
4  String name; // 名前
5  int[] score = new int[5]; // 5教科の点数格納用配列
6  int total; // 合計点
7  double ave; // 平均点
8 
9  public Score2(String name, int[] score, int total, double ave) {
10    // 引数の値で名前を設定
11    // ここに処理を記述
12 
13    // 繰り返し文を利用して引数の値で配列を設定
14    // ここに処理を記述
15 
16    // 引数の値で合計点を設定
17    // ここに処理を記述
18 
19    // 引数の値で平均点を設定
20    // ここに処理を記述
21 
22  }
23}

NEXT>> 4.6 練習問題 解答

f