跳到主要內容

物件導向觀念深入1 - 多型(Polymorphism)


頻道需要你的支持,謝謝你成為我們的會員(加入會員)

影片1 不懂多型,就不要說你會物件導向。多型基本觀念與多型應用的五大主題之 1   



影片2 多型讓最多人昏倒的觀念->方法的呼叫與執行。多型基本觀念與多型應用的五大主題之 2,3   



影片3 快來調整你的誤解 => 多型 Casting 從來就不是上層類別轉型為下層類別。多型應用五大主題之 4,5    



影片4 多型實務應用範例-任務1 薪資管理 



影片5 多型實務應用範例-任務2 年終分紅 



範例


  多型是物件導向中相當重要的特性。主要的意義是:用上層型別宣告的變數,可以參照任何下層型別的物件。換個角度講:用上層型別的變數,控制下層型別的物件。實作上,可以用來取代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方法列印出所有人加上分紅金額後的薪資。

執行結果為列印出所有人加上分紅金額後的薪資,格式由你決定。