所有計算機程序本質由代碼與數據兩大元素構成。兩大編程範式的根本差異在於組織中心:
| 維度 | 面向過程 | 面向對象 |
|---|---|---|
| 核心抽象 | 函數/過程 | 類/對象 |
| 執行流程 | 主函數調用子函數,順序由程序員預定 | 主函數創建對象,調用成員方法,過程概念淡化 |
| 數據與代碼關系 | 分離,代碼操作數據 | 封裝統一,數據控制代碼訪問 |
| 擴展性 | 修改函數影響範圍大 | 通過繼承/多態實現開閉原則 |
將代碼與數據捆綁,對外暴露清晰接口,隱藏實現細節。Java中class為基本封裝單元,通過private/public控制訪問權限。好處:
子類獲取父類屬性與行為,支持層次分類。如:波斯貓 → 貓 → 哺乳動物 → 動物。優勢:
「一個接口,多種實現」。同名方法根據參數/對象類型表現不同行為。如剎車系統:駕駛員只需踩剎車(統一接口),底層可為碟剎/鼓剎/電子剎(多種實現)。
Transmission提供方向盤/剎車/換檔器通用接口三者協同將獨立組件組裝為一致、健壯、可維護的系統——這正是OOP的核心價值。
C語言(面向過程)是我的入門語言,通過主函數調用子函數構建邏輯;C++引入類概念,主函數創建對象、調用成員方法,過程概念退居幕後。理解「數據控制代碼」的範式轉換,是從C邁向C++/Java/OC的關鍵認知躍遷。