影片1 不懂多型,就不要說你會物件導向。多型基本觀念與多型應用的五大主題之 1
影片2 多型讓最多人昏倒的觀念->方法的呼叫與執行。多型基本觀念與多型應用的五大主題之 2,3
影片3 快來調整你的誤解 => 多型 Casting 從來就不是上層類別轉型為下層類別。多型應用五大主題之 4,5
多型是物件導向中相當重要的特性。主要的意義是:用上層型別宣告的變數,可以參照任何下層型別的物件。換個角度講:用上層型別的變數,控制下層型別的物件。實作上,可以用來取代Overload。
在了解多型之前。我們先回顧一下子類別繼承父類別之後,子類別中可以做什麼?子類別可以:
1.
新增自己的成員
2.
存取父類別的成員
3.
遮蔽或覆載父類別的成員
在前面的繼承,強調的是:“繼承了,就有了”。在多型這邊要強調的是:“繼承了,就是了”。
多型五大主題。
1.
指派
A.
變數
B.
集合
C.
參數
2.
呼叫方法
只能夠呼叫父類別中的方法。
3.
執行方法
執行子類別中定義的內容,除非子類別中沒有 Override。
4.
Casting
A.
小括號中的型別必須
is-a 變數的型別。
B.
失敗會產生執行時期的錯誤。
5.
instanceof
運算符號。用來判斷左值是否
is-a 右值。Casting之前一定要先做 instanceof 判斷。
任務1:薪資管理
請以物件導向並搭配多型的程式碼完成工作。
員工角色:經理、課長、職員。
底薪:經理 5萬。課長 4萬。職員 3萬。
加給:
主管加給 經理 -> 5000,課長 -> 3000
全勤加給 3000
交通加給 2000
在 main 中,用一個集合儲存:
1個經理、 2個課長與16個職員。
每個人都一定有底薪,主管一定有主管加給,所有人可能有全勤加給,可能有交通加給。是否有,由你決定
呼叫 setAllSalary 方法,可以設定集合中所有人的薪資。
呼叫 showAllSalary 方法,可以列印出所有人的薪資。
例:
public static void main(String[] args){
ArrayList<Employee> list = new
ArrayList<>();
//新增員工並設定員工是否全勤,是否有交通加給
…
…
setAllSalary(list);
showAllSalary (list);
}
執行結果為列印出所有人薪資,格式由你決定。
任務2:年終分紅 (延續任務1)。
金額:底薪 * 分紅率
分紅率:經理 0.3 課長 0.6 職員 0.8
呼叫setAllBonus方法。可以設定所有人的分紅金額,並把該金額加入原先的薪資裡面。
呼叫showAllSalary方法列印出所有人加上分紅金額後的薪資。
執行結果為列印出所有人加上分紅金額後的薪資,格式由你決定。