前回に引き続き、自己紹介プログラムを作成していきましょう。
1回目はフィールド、コンストラクタ、インスタンスメソッドを作成しました。2回目はクラスフィールド、クラスメソッドを作成しました。
この章では、下記の機能を作成していきます。
・インスタンスフィールドの追加
・コンストラクタのオーバーロード
自己紹介プログラムを作成③
今回も作成する課題を記載しています。
書き方などは調べながらでも構わないので、解答を見ずに自分でプログラムを作成してみてください。調べながら色々なコードを書くことで力が付きますので、まずは自分でやり遂げましょう。
解答は章の終わりに載せています。
準備
・以下のjavaファイルを作成して下記のコードを入力してください
ファイル
・Main.java
・Person.java
Main.java
class Main{ public static void main(Strint[] args){ Person person1 = new Person(“鈴木”, “太郎”, 20, 1.7, 60); person1.print(); Person person2 = new Person(“山田”, “花子”, 22, 1.5, 40); person2.print(); Person.printCount(); } } |
Person.java
class Person{ public static int count = 0; public String firstName; public int age; public double height, weight; Person(String firstName, int age, double height, double weight){ Person.count++; this.firstName = firstName; this.age = age; this.height = height; this.weight = weight; } public String fullName(){ return this.firstName + this.lastName; } public void print(){ System.out.println(“名前は” + this.fullName() + “です”); System.out.println(“年は” + this.age + “です”); } public double bmi(){ return this.weight / this.height / this.height; } public void printCount(){ System.out.println(“合計” + Person.count + “人です”); } |
インスタンスフィールドの追加
・インスタンスフィールドに「lastName」を追加しましょう
コンストラクタのオーバーロード
・lastNameの値を引数で受け取るコンストラクタを追加で定義してください
※順番はfirstNameの次
・作成したコンストラクタの中に「Person.count++; this.lastName;」を追加しlastNameフィールドの値をセットしてください
解答
ここまで自分で手を動かしながらプログラムを作成できましたか?
今回までに学んだ内容はJavaのプログラムの基礎です。これらをしっかりと理解し、コードを書くことができるようになる必要があります。
これまで学んだ内容や、調べた内容をもとに必ず最後まで書き上げてから解答を見て下さい。
準備段階ではeclipseはエラーを示している状態です。
インスタンスフィールドの追加
Personクラスのフィールドは下記の通りです。
// クラスフィールドを定義 public static int count = 0; // インスタンスフィールドを定義 public String firstName; public String lastName; public int age; public double height; public double weight; |
コンストラクタのオーバーロード
Main.java
class Main { public static void main(String[] args) { Person person1 = new Person(“鈴木”, “太郎”, 20, 1.7, 60); person1.print(); Person person2 = new Person(“山田”, “花子”, 22, 1.5, 40); person2.print(); Person.printCount(); } } |
Person.java
lastNameも受け取るコンストラクタを定義しました。
class Person{ // クラスフィールドを定義 public static int count = 0; // インスタンスフィールドを定義 public String firstName; public String lastName; public int age; public double height; public double weight; // コンストラクタを定義しインスタンスフィールドに値をセット Person(String firstName, int age, double height, double weight) { Person.count++; this.firstName = firstName; this.age = age; this.height = height; this.weight = weight; } // コンストラクタのオーバーロード Person(String firstName, String lastName, int age, double height, double weight) { Person.count++; this.firstName = firstName; this.lastName = lastName; this.age = age; this.height = height; this.weight = weight; } // インスタンスメソッドfullNameを定義 public String fullName(){ return this.firstName + this.lastName; } // インスタンスメソッドbmiを定義 public double bmi() { return this.weight / this.height / this.height; } // インスタンスメソッドprintを定義 public void print() { System.out.println(“名前は” + this.fullName() + “です”); System.out.println(“年は” + this.age + “です”); } public static void printCount() { System.out.println(“合計” + Person.count + “人です”); } } |
実行結果