1. 程式人生 > >Java面向物件之多型(來源於身邊的案例)

Java面向物件之多型(來源於身邊的案例)

201913 星期四

Java面向物件之多型(來源於身邊的案例)

 

1. 為什麼要用多型?

1.1 多型是面向物件的三大特性之一

1.2 多型是基於介面設計的模型

1.3 多型具有橫向擴充套件特性

1.4 可以非常標準匹配“依賴倒置原則”,降低前端與後端間的耦合

 

2.不一樣的多型案例

2.1 UML靜態模型圖

 備註:想學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面向物件裡的多型嗎?多完美啊。。。這也很好說明了為什麼會有多型出現。。。因為生活中就存在太多這種例子,所以需要多型來匹配解決