コンストラクタ
Java練習問題 第11回では「コンストラクタ」についての問題を用意してあります。
「コンストラクタ」の解説はこちら
問題 1 難易度 ★★★
以下の手順に従ってプログラムを作成してください。
STEP 1
① Car クラスを定義してください。
② Car クラスには、インスタンス変数として「int 型の number(車番)」,「double 型のgas(ガソリン残量)」と、クラス変数として「int 型の count(累計製造台数)」を定義してください。
STEP 2
① Car クラスに、number と gas を受け取るコンストラクタを定義してください。
② コンストラクタでは、累計製造台数のインクリメント、引数をフィールドに代入、累計生産台数と、生成した Car インスタンスの車番とガソリン残量を表示してください。
STEP 3
① mainメソッド内で定義済みの 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回では「カプセル化」から出題します。
コメント