最初,軟件開發所使用的思想都是面向過程,面向過程的模式更適合計算機運算,或者說更貼近於人類大腦的理解模式。然而隨着時代的發展,軟件系統也愈來愈複雜,規模愈來愈大,面向過程的弊端逐漸顯現出來,最關鍵的在於面向過程開發出的軟件系統更難維護,代碼耦合度較高,當需求變動後,每次都須要修改大量的代碼。html
面向對象的出現則解決了這些問題,固然有付出纔有回報,相比與面向過程,面向對象思想下的代碼也有如下缺點:java
總而言之,面向過程和麪向對象並無誰優誰劣,只是適用範圍不一樣,若是說項目比較簡單,也不太須要關心後期變動的問題,面向過程可讓你更快的構建項目,若是說項目規模比較大,後期項目會有較長的維護期,那從需求分析開始,你就須要以面向對象的思想來處理。性能
抽象就是以某一個視角來看待這個世界中的東西並將其封裝爲類,將咱們關心的屬性做爲類的屬性,咱們關心的動做做爲方法,而後經過控制其屬性和方法是否爲私有來控制是否能夠被外界訪問設計
被繼承的類咱們通常稱之爲超類、基類或父類,而繼承父類的類咱們通常稱之爲子類。繼承在設計中通常都是大類到小類的過程,父類和子類的關係爲「is a」,例如封裝一個動物類,而後經過繼承實現一個子類,例如狗,這樣狗擁有動物的全部特徵,以後即可在子類中繼續編寫狗特有的屬性和方法,父子類的關係可描述爲狗是一種動物。htm
注:雖說繼承是衆多開發語言都具有的功能,但繼承也存在很大的代碼耦合問題,父類的代碼一旦變動則會致使全部子類都會跟着改變,因此開發過程當中儘量的使用接口來代替繼承。對象
詳細瞭解可參考《java提升篇(四)-----理解java的三大特性之多態》blog