[ Java練習問題 ] 練習問題 第11回 『コンストラクタ』

目次

コンストラクタ

Java練習問題 第11回では「コンストラクタ」についての問題を用意してあります。
「コンストラクタ」の解説はこちら

問題 1 難易度 ★★★

問 1

① Car クラスを定義してください。
② Car クラスには、インスタンス変数として「int 型の number(ナンバー)」,「double 型の gas(ガソリン残量)」と、クラス変数として「int 型の count(累計製造台数)」を定義してください。

問 2

① Car クラスに、number と gas を受け取るコンストラクタを定義してください。
② コンストラクタでは、累計製造台数のインクリメント、引数をフィールドに代入、
累計生産台数の出力、生成した Car インスタンスの状態表示を行ってください。

問 3

① メインメソッド内で定義済みの Car クラスから、インスタンスを2つ生成してください。
② 一台目は、車番:1001、ガソリン量 10.0、 二台目は、車番:2002、ガソリン量 20.0 で生成してくだ   さい。

実行例

Car クラスから 1 台目の Car インスタンスを生成しました
車番:1001、ガソリン残量:10.0 です
Car クラスから 2 台目の Car インスタンスを生成しました
車番:2002、ガソリン残量:20.0 です

問題 1 解答

正解は、、、
public class Main_0701 {
  public static void main(String[] args) {
    Car car = new Car(1001, 10.0);
    Car car2 = new Car(2002, 20.0);
  }
}

class Car {
  static int count; // 累計製造台数
  int number; // 車番
  double gas; // ガソリン残量
  
  public Car() {
  }
  
  public Car(int number, double gas) {
    count++;
    this.number = number;
    this.gas = gas;
    System.out.println("Car クラスから "+ count +"台目の Car インスタンスを生成しました");
    System.out.println("車番:" + number + "、ガソリン残量:" + gas + "です");
  }
}

問題 2 難易度 ★★★

① BankAccount(銀行口座)クラスに、コンストラクタをオーバーロード定義して、
  以下のコードが正しく動作するようにしてください。

public class Main_0702 {
  public static void main(String[] args) {
    BankAccount[] bankAccounts = new BankAccount[4];
    bankAccounts[0] = new BankAccount("鈴木一郎"); //名前のみ登録
    bankAccounts[1] = new BankAccount("佐藤健一", "東京都北区"); //名前と住所を登録
    bankAccounts[2] = new BankAccount("山田太郎", 1000); //名前と残高を登録
    bankAccounts[3] = new BankAccount("田中花子", "千葉県柏市", 3000); //名前,住所.残高を登録
      for (int i = 0; i < bankAccounts.length; i++) {
      bankAccounts[i].show();
      }
  }
}

class BankAccount {
  static int staticCount;
  int number;
  String name;
  String address;
  long amount;
  
  void show() {
    System.out.println("口座番号:" + number
    + "\t 口座名義:" + name
    + "\t 住所:" + address
    + "\t\t 残高:" + amount + "");
  }
    // 解答をここに記述してください。
}

実行例

口座番号:1 口座名義:鈴木一郎 住所:住所未登録 残高:0 円
口座番号:2 口座名義:佐藤健一 住所:東京都北区 残高:0 円
口座番号:3 口座名義:山田太郎 住所:住所未登録 残高:1000 円
口座番号:4 口座名義:田中花子 住所:千葉県柏市 残高:3000 円

問題 2 解答

正解は、、、
public class Main_0702 {
  public static void main(String[] args) {
    BankAccount[] bankAccounts = new BankAccount[4];
    bankAccounts[0] = new BankAccount("鈴木一郎"); //名前のみ登録
    bankAccounts[1] =new BankAccount("佐藤健一","東京都北区"); //名前と住所を登録
    bankAccounts[2] =new BankAccount("山田太郎",1000); //名前と残高を登録
    bankAccounts[3] =new BankAccount("田中花子","千葉県柏市",3000);//名前,住所,残高を登録
      for (int i = 0; i < bankAccounts.length; i++) {
        bankAccounts[i].show();
      }
  }
}

class BankAccount {
  static int staticCount;
  int number;
  String name;
  String address;
  long amount;
  
  void show() {
    System.out.println("口座番号:" + number
    + "\t 口座名義:" + name
    + "\t 住所:" + address
    + "\t\t 残高:" + amount + "");
  }
  
  BankAccount(String name, String address, long amount) {
    staticCount++;
    this.number = staticCount;
    this.name = name;
    this.address = address;
    this.amount = amount;
  }
  
  BankAccount(String name, String address) {
    this(name, address, 0);
  }
  
  BankAccount(String name, long amount) {
    this(name, "住所未登録", amount);
  }
  
  BankAccount(String name) {
    this(name, 0);
  }
}

Java練習問題 第12回では「カプセル化」から出題します。

(Visited 145 times, 1 visits today)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次