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面向對象里的多態嗎?多完美啊。。。這也很好說明了為什么會有多態出現。。。因為生活中就存在太多這種例子,所以需要多態來匹配解決

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM