---
# System prepended metadata

title: 'Inheritance:'
tags: [Java, ' inheritance', ' extends']

---

---
tags: Java, inheritance, extends
---
# Inheritance:
https://github.com/hryjosn/java_class_tutorial

## :memo: 繼承 (Inheritance)


繼承可說是類別的精華，利於程式碼重複被使用。

    繼承：可保有原先的程式碼，並加以擴增；再利用的程式碼可以重複使用。
![](https://i.imgur.com/x3io4Q1.png)
![](https://i.imgur.com/xFsbFoY.png)
![](https://i.imgur.com/7HjKPc5.png)

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

參見class_ex5.java

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


---
> 注意：一個 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. 穿戴至少一項武器

   