舉個最簡單點的例子來區分 面向過程和面向對象
有一天你想吃魚香肉絲了,怎么辦呢?你有兩個選擇
1、自己買材料,肉,魚香肉絲調料,蒜苔,胡蘿卜等等然后切菜切肉,開炒,盛到盤子里。
2、去飯店,張開嘴:老板!來一份魚香肉絲!
看出來區別了嗎?這就是1是面向過程,2是面向對象。
面向對象有什么優勢呢?首先你不需要知道魚香肉絲是怎么做的,降低了耦合性。如果你突然不想吃魚香肉絲了,想吃洛陽白菜,對於1你可能不太容易了,還需要重新買菜,買調料什么的。對於2,太容易了,大喊:老板!那個魚香肉絲換成洛陽白菜吧,提高了可維護性。總的來說就是降低耦合,提高維護性!
面向過程是具體化的,流程化的,解決一個問題,你需要一步一步的分析,一步一步的實現。
面向對象是模型化的,你只需抽象出一個類,這是一個封閉的盒子,在這里你擁有數據也擁有解決問題的方法。需要什么功能直接使用就可以了,不必去一步一步的實現,至於這個功能是如何實現的,管我們什么事?我們會用就可以了。
面向對象的底層其實還是面向過程,把面向過程抽象成類,然后封裝,方便我們我們使用的就是面向對象了。
面向過程:
優點:性能比面向對象好,因為類調用時需要實例化,開銷比較大,比較消耗資源。 缺點:不易維護、不易復用、不易擴展.
優點:易維護、易復用、易擴展,由於面向對象有封裝、繼承、多態性的特性,可以設計出低耦合的系統,使系統 更加靈活、更加易於維護 . 缺點:性能比面向過程差
面向對象的三大特性:
1、封裝 隱藏對象的屬性和實現細節,僅對外提供公共訪問方式,將變化隔離,便於使用,提高復用性和安全性。 2、繼承 提高代碼復用性;繼承是多態的前提。 3、多態 父類或接口定義的引用變量可以指向子類或具體實現類的實例對象。提高了程序的拓展性。