はじめに
【オブジェクト指向】を 【Java = ジャバ】言語で考えてみました。
以下を参照。
スーパークラス
public class Person {
// フィールド
private int age; //年齢
private String name; //名前
// コンストラクタ
/* 引数はなし */
public Person() {
this.age = 99;
this.name = "影太郎";
/* デバッグポイント */
//スーパークラスのコンストラクタ(引数はなし)
System.out.println("実行されないこと");
}
// コンストラクタ
public Person(int age, String name) {
this.age = age;
this.name = name;
/* デバッグポイント */
//スーパークラスのコンストラクタ
System.out.println("Person(int age, String name)");
}
// getterメソッド
public int getAge() {
return age;
}
// setterメソッド
public void setAge(int age) {
this.age = age;
}
// getterメソッド
public String getName() {
return name;
}
// setterメソッド
public void setName(String name) {
this.name = name;
}
//スーパークラスのメソッド
public void display() {
System.out.println("年齢は " + age);
System.out.println("名前は " + name);
}
}
サブクラス
public class Employee extends Person {
// フィールド
private int employeeId; //従業員ID
// コンストラクタ
public Employee(int age, String name, int employeeId) {
/*デバッグポイント*/
//サブクラスのコンストラクタ
System.out.println("Employee(int age, String name, int
employeeId)");
/* スーパークラスの age と name 引数のコンストラクタを呼び出す */
super(age, name);
this.employeeId = employeeId;
}
// getterメソッド
public int getEmployeeId() {
return this.employeeId;
}
// setterメソッド
public void setEmployeeId(int employeeId) {
this.employeeId = employeeId;
}
//オーバーライド
public void display() {
//スーパークラスのメソッドを呼び出す
super.display();
//追加定義部分
System.out.println("従業員IDは " + employeeId);
}
オーバーライド = サブクラスでスーパークラスを再定義
上書きする条件がスーパークラスのメソッドと
以下のメソッドの定義がすべて同じであること
1⃣ 戻り値の型 void なし
2⃣ メソッド名 display
3⃣ 引数の型と数 () なし
}
インスタンス
Employee クラスを利用するテストプログラムを作成
public class StartClass {
public static void main(String[] args) {
System.out.println("PGM:START");
/* new するときにコンストラクタに渡す引数を指定 */
//Employeeクラスを元にインスタンス化
Employee man = new Employee(28,"新太郎", 111);
man.display();
/* new するときにコンストラクタに渡す引数を指定 */
//Personクラスを元にインスタンス化
Employee woman = new Employee(23,"新姫",222);
woman.display();
}
}
実行結果
PGM:START
Employee(int age, String name, int employeeId)
Person(int age, String name)
年齢は 28
名前は 新太郎
従業員IDは 111
Employee(int age, String name, int employeeId)
Person(int age, String name)
年齢は 23
名前は 新姫
従業員IDは 222
オブジェクト指向5
参考文献
Java関連情報サイト様
【トレノキャンプ】Javaのsuperとは?使い方をマスターして初心者を脱出しよう
https://camp.trainocate.co.jp/magazine/java-super/
【せかチャン】オーバーライドのメリットと3つの条件【Java入門講座】4-2
オーバーライド
https://www.youtube.com/watch?v=DkzlNYCVkZ8&t=365s