這個案例網上是沒有的,屬於無忌獨創,當時在幫孩子輔導作業,小學科學,裡面有一點內容是關於人的牙齒,說牙齒分為:門齒、犬齒、臼齒,問閨女,為什麼這麼分呢?閨女說牙齒雖然都是用來咬食物,但是食物種類很多,咬碎需要的工具也不一樣,門齒用來切割食物,如:蘋果、梨;犬齒用來撕碎食物,如肉類;臼齒用來磨碎食物,... ...
2019年1月3日 星期四
Java面向對象之多態(來源於身邊的案例)
1. 為什麼要用多態?
1.1 多態是面向對象的三大特性之一
1.2 多態是基於介面設計的模型
1.3 多態具有橫向擴展特性
1.4 可以非常標準匹配“依賴倒置原則”,降低前端與後端間的耦合
2.不一樣的多態案例
2.1 UML靜態模型圖
2.2 牙齒多態介面,代碼如下:
package com.wuji.duotai; public interface Tooth { void yao(); }
2.3 門齒多態實現,代碼如下:
package com.wuji.duotai; public class MenChi implements Tooth { @Override public void yao() { System.out.println("門齒用來切割食物如水果類"); } }
2.4 犬齒多態實現,代碼如下:
package com.wuji.duotai; public class QuanChi implements Tooth { @Override public void yao() { System.out.println("犬齒用來撕碎食物如肉類"); } }
2.5 臼齒多態實現,代碼如下:
package com.wuji.duotai; public class JiuChi implements Tooth { @Override public void yao() { System.out.println("臼齒用來磨碎食物,如肉類經犬齒撕碎後"); } }
2.6 場景使用類代碼如下:
import com.wuji.duotai.JiuChi; import com.wuji.duotai.MenChi; import com.wuji.duotai.QuanChi; import com.wuji.duotai.Tooth; public class Client { public static void main(String[] args) { //吃水果 eat(new MenChi()); //吃肉 eat(new QuanChi()); eat(new JiuChi()); } private static void eat(Tooth tooth){ tooth.yao(); } }
3.總結:這個案例網上是沒有的,屬於無忌獨創,當時在幫孩子輔導作業,小學科學,裡面有一點內容是關於人的牙齒,說牙齒分為:門齒、犬齒、臼齒,問閨女,為什麼這麼分呢?閨女說牙齒雖然都是用來咬食物,但是食物種類很多,咬碎需要的工具也不一樣,門齒用來切割食物,如:蘋果、梨;犬齒用來撕碎食物,如肉類;臼齒用來磨碎食物,如犬齒撕碎的肉類,就需要再用臼齒來磨碎,然後送到食道,胃,小腸,大腸進行消化。我恍然大悟,這不就是Java面向對象里的多態嗎?多完美啊。。。這也很好說明瞭為什麼會有多態出現。。。因為生活中就存在太多這種例子,所以需要多態來匹配解決