練習問題

5.4 練習問題

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

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

設問
① クラス内に同じ名前のメソッドを定義できる機能をオーバーロードという。
② メソッドはオーバーロードできるが、コンストラクタはできない。
③ オーバーロード機能の制約は、戻り値の型もしくは引数の名前が違っていればよい。
④ あるコンストラクタから同一クラス内に定義されている、別のコンストラクタを呼び出すことができる。
⑤ あるコンストラクタから別のコンストラクタを呼び出す場合、記述位置の制約はない。

問2 Books1.javaクラスに以下の仕様を持つ2つのコンストラクタを、オーバーロードを利用して定義しなさい。

コンストラクタ1
引数なしでフィールド変数titleにnull、priceに0を設定する。

コンストラクタ2
2つの引数String型のtitle、int型のpriceの値を、それぞれのフィールド変数に設定する

ソースコード

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

  package jp.co.f1.basic.ch05exercise;

  public class Books1 {
    String title;
    int price;

    // コンストラクタ1
    ※ここにコンストラクタ1処理を定義する
  
    // コンストラクタ2
    ※ここにコンストラクタ2処理を定義する

  }
  

問3 以下に示すBooks2クラスはコンストラクタから別のコンストラクタを呼び出している。このままではコンパイルエラーになってしまう理由を選択肢より選びなさい。

選択肢
① コンストラクタから別のコンストラクタを呼び出すことはできないから。
② コンストラクタに与える引数が間違っているから。
③ 2つのコンストラクタが呼び出しあい無限ループになっているから。
④ コンストラクタの呼び出す名前が間違っているから。
⑤ 処理の先頭にコンストラクタ呼び出しがあるから。

ソースコード

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

  package jp.co.f1.basic.ch05exercise;

  public class Books2 {
    String title;
    int price;

    // コンストラクタ1
    Books2() {
      this("WindowXP", 2048);
      this.title = null;
      this.price = 0;
    }
    // コンストラクタ2
    Books2(String title, int price) {
      this();
      this.title = title;
      this.price = price;
    }
  }
  

問4 Calc1クラス内に以下の仕様を持つ2つの足し算メソッドについて、オーバーロード機能を利用して定義しなさい。その際のメソッド名は「addition」とすること。

メソッド1
引数:int型 num1、num2 戻り値 int型(num1+num2)

メソッド2
引数:double型 num1、num2 戻り値 double型(num1+num2)

ソースコード

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

  package jp.co.f1.basic.ch05exercise;

  public class Calc1{
    //整数値2つの足し算結果を戻す
    ※ここにメソッド1の定義を記述する
    //不動少数点数値2つの足し算結果を戻す
    ※ここにメソッド2の定義を記述する
  }
  

問5 以下の実行結果になるように①~⑤の空欄を答えなさい。なお、Calc2クラスには問題5-4で作成した2つのメソッドと同様のメソッドが定義されます。

実行結果

ソースコード

① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch05exercise
③ 名前: Practice0501
④ 作成するメソッド・スタブの選択: public static void main(String[] args) にチェックを入れる

  package jp.co.f1.basic.ch05exercise;

  class Calc2 {
    // 整数値2つの足し算結果を戻す
    ※ここにメソッド1の定義を記述する
    // 不動少数点数値2つの足し算結果を戻す
    ※ここにメソッド2の定義を記述する
  }

  public class Practice0501 {
    public static void main(String[] args) {
      // Calcオブジェクトの生成
      ①calc = new①();

      ②num1 = 10;
      ②num2 = 20;
      System.out.println(num1 + " + " + num2 + " = " + calc. ③ );

      ④ num3 = 45.2;
      ④ num4 = 16.9;
      System.out.println(num3 + " + " + num4 + " = " + calc. ⑤ );
    }
  }
  

NEXT>> 5.5 練習問題 解答