オブジェクト指向4

##    はじめに

  __<font color="blue">　【オブジェクト指向】</font>を__ __<font color="blue">　【Java = ジャバ】</font>言語で考えてみました。__

##### 以下を参照。
https://qiita.com/nekoozi/items/ad5baf8c901e07af2b31

# <font color="blueviolet">スーパークラス</font>
```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);
     }
}



```


-------------
# <font color="blueviolet">サブクラス</font>

```java
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⃣　引数の型と数　()　　なし

}


```


-------------
# <font color="blueviolet">インスタンス</font>
Employee クラスを利用するテストプログラムを作成

```java
  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

https://qiita.com/nekoozi/items/d01959cf51b8ca6ae7d2




## 参考文献

Java関連情報サイト様

【トレノキャンプ】Javaのsuperとは？使い方をマスターして初心者を脱出しよう
     https://camp.trainocate.co.jp/magazine/java-super/



-------------------------------
【せかチャン】オーバーライドのメリットと３つの条件【Java入門講座】4-2 
オーバーライド
     https://www.youtube.com/watch?v=DkzlNYCVkZ8&t=365s

-------------------------------