0
0

オブジェクト指向4

Last updated at Posted at 2024-07-29

はじめに

 【オブジェクト指向】  【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


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0