---
# System prepended metadata

title: 'NKUST 2021214:'
tags: [Java, ' Inheritance', ' Constructor']

---

---
tags: Java, Constructor, Inheritance
---
# NKUST 2021214:
https://github.com/hryjosn/java_class_tutorial

## :memo: 



##### 1. 建構元(Constructor)
     通常是用來對物件的資料成員做初始化(initialization)，設定物件的初值

1. 建構元的名稱必須與其所屬之類別的類別名稱相同
2. 建構元不能有回傳值
3. 建構元在建立物件的時候會被自動呼叫
4. 建構元也可以多載
5. 建構元之間呼叫的方式用 this()
6. 建構元可省略，java會幫你建一個，但如果你有創造有參數的建構元，就一定要傳值進去否則會錯：因為Java就不會幫你自動建立建構元
   
參見class_ex4.java

##### 2. 繼承 (Inheritance)
![](https://i.imgur.com/x3io4Q1.png)
![](https://i.imgur.com/7HjKPc5.png)

1.如果省略的super(T) 敘述，則父類別中没有引數的建構元還是會被呼叫，可自行試試。
2.呼叫父類別建構元的 super 必須寫在子類別建構元裡的第一個叙述，不能置於它處，否則編譯時將出現錯誤訊息。
3.super 可以多載，也就是說，super 會根據引數的數量及型態，執行相對應之父類别的建構元。
      
參見class_ex5.java

    比較this() super(), this()在同一類別內呼叫他的建構元, super()則是從子類別的建構元呼叫其父類別的建構元

Git 操作

git checkout new branch
git pull
git merge
git push

---
> 注意：一個 Java 檔只能一個 public 類別喔，且必須跟檔名相同 !!

---
##### Exercise:
使用繼承及建構元
1. 定義三種角色職業
    1. 弓箭手 (HP:15, Att:30, MP:10)
    2. 狂戰士 (HP:20, Att:15, MP:5)
    3. 魔法師 (HP:10, Att:40, MP:30)
2. 每個角色都要能夠
    1. 攻擊
    2. 詠唱（喊出自己的技能名稱）
    3. 穿戴至少一項武器

   