我想開一間咖啡廳,所以我就用他來舉個例子,但還是必須要先了解 OOP 物件導向。
請先知道我的咖啡廳有三種不同的角色 咖啡師、服務生、會計。
繼承
一開始可以先當作父類別可以擁有子類別的功能,我覺得比較好記,可以達到重用程式碼的好處,但事實上我認為是一種行為的擴充。
假設我訂定一個一般員工必要的條件,這個已有的技能去做擴充,例如人手若不足必須要有點餐的方法,可以使用繼成,因此覺得可以把它想像成大範圍的統稱會比較適合。
封裝
我是這間咖啡廳的老闆,我今天視察咖啡廳,但每個員工都跟我說:如何煮咖啡、如何選豆子、咖啡豆口味是什麼風味、怎麼烘焙咖啡豆、操作Pos 機、如何有效率打掃餐桌、如何應付客人、如何結帳、帳目報表、如何報稅... 除此之外還有很多。
突然來這麼多訊息,對我老闆而言,並不是必須,跟咖啡斯說,我要一杯美式偏酸一點的風味,過程中怎麼做的我不用了解,說出我想要的關鍵字,即可拿到一杯咖啡豆品種風味偏酸的咖啡。
這就是封裝,假設你覆轍咖啡師的類別開發,對其他人來說,使用你這個類別的角度,不需要的就不要設定public 權限,讓操作的人眼花撩亂。
多型
只要是同類,但做不同的事情,我是老闆有咖啡師、服務生、會計師... 他們都是我的員工,員工都需要做事定義一個做事的方法,其他員工工作的細節,在各至繼承這個定義去實作。
- 咖啡師的工作:煮咖啡
- 服務生的工作:服務客人
- 會計師的工作:算錢