1、認識面向對象首先要認識面向過程
面向過程編程,舉個例子
比如有一天你要吃回鍋肉,你會先去准備食材,然后一步一步把這道菜做出來,這就是面向過程。
還有一種方式你依然可以得到這道菜,你可以去飯店直接點這道菜,這道菜就成為了一個抽象的概念,你不需要知道這道菜是怎么來的,你就已經擁有了這道菜。這就是面向對象。
面向過程是具體化的,流程化的,解決一個問題,你需要一步一步的分析,一步一步的實現。
面向對象是模型化的,你只需抽象出一個類,這是一個封閉的盒子,在這里你擁有數據也擁有解決問題的方法。需要什么功能直接使用就可以了,不必去一步一步的實現,
至於這個功能是如何實現的,我們不需要知道,我們只需要使用即可。
其實本質上看,面向對象的內層還是面向過程的,把過程封裝抽象,讓內部過程不可見,只留下外部接口,那么這就是面向對象。
2、面向對象的三大特性
1、封裝
隱藏對象的屬性和實現細節,僅對外提供公共訪問方式,將變化隔離,便於使用,提高復用性和安全性。2、繼承
提高代碼復用性;繼承是多態的前提。3、多態
父類或接口定義的引用變量可以指向子類或具體實現類的實例對象。提高了程序的拓展性。3、面向對象的五大基本原則
1、單一職責原則SRP(Single Responsibility Principle)
類的功能要單一,不能包羅萬象。
2、開放封閉原則OCP(Open-Close Principle)
一個模塊對於拓展是開放的,對於修改是封閉的。
3、里式替換原則LSP(the Liskov Substitution Principle LSP)
子類可以替換父類出現在父類能夠出現的任何地方。
4、依賴倒置原則DIP(the Dependency Inversion Principle DIP)
高層次的模塊不應該依賴於低層次的模塊,他們都應該依賴於抽象。抽象不應該依賴於具體實現,具體實現應該依賴於抽象。就是你出國要說你是中國人,而不能說你是哪個村子的。
比如說中國人是抽象的,下面有具體的xx省,xx市,xx縣。你要依賴的是抽象的中國人,而不是你是xx村的。
5、接口分離原則ISP(the Interface Segregation Principle ISP)
設計時采用多個與特定客戶類有關的接口比采用一個通用的接口要好。就比如一個手機擁有打電話,看視頻,玩游戲等功能,把這幾個功能拆分成不同的接口,比在一個接口里要好的多。