1. 程式人生 > >Java學習筆記--Thinking in Java(精華部分提取)

Java學習筆記--Thinking in Java(精華部分提取)

Chapter1 物件導論

(1)程式設計即抽象
(2)每個物件都有介面
(3)每個物件都提供服務
設計過程中,應遵循"高內聚,低耦合"原則
(4)被隱藏的具體實現
類設計過程,應通過封裝的手段,將實現細節隱藏(private),而將介面暴露(public)
(5)複用具體實現
複用:同一個實現,應儘可能保證在不同的場景下可以直接使用
複用的手段包括:組合(composition)、繼承(aggregation)..
所謂組合,即has-a;所謂繼承,即is-a
(6)繼承
基類(父類),通過繼承的方式,得到匯出類(子類)。子類成為父類的泛化。
子類可以複製父類所有行為,也可以重寫父類的行為。
理想的繼承應為is-a,但實際上通常是is-like-a
(7)伴隨多型的可互換物件
面向介面程式設計,在需要改動時(更換介面物件),將修改開銷降到最小。
實現相同介面的類(繼承自相同父類的子類),由於多型的作用,對於相同的介面,表現出各自不同的行為。
多型的實現方法,即後期繫結。在編譯期間,編譯器無法確定介面方法呼叫的哪個具體實現。
將子類轉化為父類物件(實現轉化為介面)的行為,稱為向上轉型(upcast);反之,稱為向下轉型。
(8)單根繼承結構
java中,所有物件(基本型別不算)具有相同的基類(Object),且所有子類都只能繼承自唯一一個父類。
(9)容器
jdk中提供了很多不同型別的容器,應對不同場景的使用。
(10)物件的建立及生命期
不同於c++,Java中申請的物件不需要手動釋放,而由GC釋放。常見演算法包括:引用計數、根節點可及。
由於GC,Coder可將精力放在更頂層的設計上。
(11)異常處理:處理錯誤
程式中意外情況,都以異常的形式丟擲,供處理。
(12)併發程式設計
多執行緒/多程序可以提升CPU的利用率,也解決了多個任務需要同時執行的需求,但是也帶來了難度和問題。
隱患主要在於共享資源的訪問及修改,而鎖,成為解決併發程式設計的一大利器。
(13)Java與Internet
網路即socket。全球資訊網將遍佈世界的不同主機連線起來,提供通訊。常見的通訊架構:C/S,B/S。

 

---持續更新---