首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

《Java 編程思想》讀書筆記(一):對象入門與面向對象核心思想

     編輯:Java 綜合教學

《Java 編程思想》讀書筆記(一):對象入門與面向對象核心思想

若學 Java 未讀透《Java 編程思想》,不好意思說學過 Java。本系列記錄閱讀心得,助力內化。

1. 抽象的演進

  • 匯編 → 機器指令抽象
  • FORTRAN/C → 匯編抽象
  • LISP/APL → 算法抽象;Prolog → 決策鏈抽象
  • OOP:將問題空間元素映射為「對象」,按問題描述問題,而非按方案描述問題

2. Alan Kay 的五大 OOP 特征

  1. 萬物皆對象:對象 = 數據 + 操作,可從問題提煉概念構建對象
  2. 程序 = 對象組合 + 消息傳遞:向對象發消息(調用方法)令其工作
  3. 對象擁有私有存儲:可封裝其他對象構建新對象,複雜度可無限疊加
  4. 對象有類型(類):類定義接口(能發什麼消息),對象是類的實例
  5. 同類對象可接收同樣消息:可替換性——子類型可替換父類型(里氏替換原理雛形)

總結:萬物皆對象,程序靠消息驅動對象協作,對象封裝狀態與行為,類型定義接口,多態實現可替換。

3. 接口與訪問控制

  • 接口定義「能發什麼消息」,實現細節隱藏(private)
  • 兩大作用:① 防止客戶代碼依賴實現細節;② 允許庫設計者修改內部不影響調用者
  • Java 四種訪問級別:public、protected、default(package)、private

4. 復用:組合優於繼承

  • 組合:新類包含現有對象(「有一個」關係),靈活、運行期可動態換裝
  • 繼承:子類「是一個」基類,編譯期固定,濫用導致層級膨脹
  • 原則:優先組合,確立「是一個」關係且需多態時才繼承

5. 繼承與多態

  • extends 擴展基類,可覆蓋方法改善行為(改善 = 同接口、不同實現)
  • 向上轉型:子類對象賦值給父類引用,調用被覆蓋方法 → 動態綁定 自動調用子類版本
  • 抽象類(abstract)與接口(interface)規範契約,強制子類實現

6. 對象創建與生命周期

  • Java 單根繼承(Object),所有對象最終歸一,便於垃圾回收器統一管理
  • 堆上創建,GC 自動回收無引用對象,犧牲確定性換取開發簡易性
  • 集合框架(Collection/Map)+ 迭代器(Iterator)統一訪問不同數據結構
  • 參數化類型(泛型)解決「容器元素類型不安全」問題(Java 5 引入)

7. 異常控制

  • 異常 = 錯誤處理對象化,從錯誤點拋出,調用鏈向上尋找處理器
  • Java 強制檢查異常(Checked Exception),編譯期保證錯誤被處理

8. 多線程

  • 語言內建支持,線程即對象(Thread/Runnable)
  • 共享內存模型 → 需同步(synchronized/Lock)避免競態

9. 永久性與網絡

  • 序列化實現有限永久性(對象 → 字節流 → 磁盤/網絡)
  • Applet 解決客戶端分發難題(已淘汰),Servlet/JSP 佔領服務端
  • 安全模型:沙箱機制限制非受信代碼權限

10. 分析與設計方法論

  • 四階段:0-制定計劃 → 1-需求/用例 → 2-設計(UML/文本) → 3-實現 → 4-持續修正(迭代)
  • 核心問題:對象是什麼?接口是什麼?
  • 迭代開發:先跑通核心框架,再逐漸增量添加特性
  • 計劃誠實:感覺時間 ×2 + 10%

11. Java vs C++

  • Java 簡單、健壯、跨平台、內建線程/網絡/GC,適合應用層快速開發
  • C++ 性能優勢、豐富生態、靈活多樣,適合系統級/高性能場景
  • 兩者長期共存,選型看場景而非單純替代
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved