Thinking-in-Java-讀書筆記-1-對象導論

前言

從本章開始,逐漸記錄筆者在閱讀「Thinking in Java」時,內容的積累、代碼的實踐和個人編程的心得,重要的是個人的成長。正式工作將近一年的我,有必要重新溫故一下Java的核心基礎,鞏固自身的硬實力,從根本感受Java語言的魅力,而不是侷限於敲代碼,完成產品需求。更重要的是領悟每種語言的特色,融入其中,提升自己,感受學習帶來的快樂!足以!

正文

1. Java 五個基本特性

  1. 萬物皆爲對象
  2. 程序是對象的集合,他們通過發送消息來告知彼此所要做的。
  3. 每個對象都有自己的由其他對象所構成的存儲。
  4. 每個對象擁有其類型。
  5. 某一特定類型所有對象都已接收同樣的消息。

2. 每個對象都有一個接口

3. 每個對象都提供服務

將對象看做是服務提供者有一個好處,它有助於提高對象的內聚性。這不僅在設計過程中非常有用,而且當其他人試圖理解你的代碼活重用某個對象時候, 如果他們看出對象多能提供的服務的價值,它會調整對象以適應其設計的過程變得簡單很多。

4. 被隱藏的具體實現

類創建者的目標是構建類,這種類只向客戶端程序員暴露必需的部分,而隱藏其他部分。這以爲着類創建者可以任意修改被隱藏的部分,而不用擔心對其他任何人造成影響,被隱藏的部分通常對象內部脆弱的部分,它們很容易被粗心或者不知內情的客戶端程序員所毀壞,因此將實現隱藏起來可以減少程序的 bug。

5. Java 用三個關鍵字在類的內部設定邊界

public private protected
任何人都可以用 除類型創建者和內部方法,任何人不能訪問 僅繼承的成員可以訪問

6. 複用具體實現

代碼複用是面向對象程序設計語言所提供的最了不起的優點之一。在建立新類時,應該優先考慮組合,因爲它更加簡單靈活,如果採用這種方式,設計會變得更加清晰,一旦有了一些經驗之後,便能夠看出必須使用繼承的場合了。

7. 繼承

繼承

void doSomeThing(Shape shape) {
    shape.draw();
    // ....
    shape.setColor();
 }
Circle circle = new Circle();
doSomeThing(circle);

Circle被傳入到預期接收的Shape,向上轉型,這就是泛型的使用,當調用基類的方法時,會主動定位到指定的具體對象,調用該對象的具體實現方法。

8. 容器

需要對容器有所選擇,主要有兩個原因:1. 不同容器提供了不同類型的接口和外部行爲。堆棧相比於隊列就具備不同的接口和行爲。2. 不同的容器對某些操作具有不同的效率,最好的例子便是 ArrayListLinkedList

9. 對象的創建和生命週期

在使用對象時,最關鍵的問題之一便是它們的生成和銷燬方式,每個對象爲了生存都需要資源,尤其是內存,當我們不再需要一個對象時候,它必須被清理掉,使其佔有的資源可以被釋放和重用。

10. 異常處理:處理錯誤

異常處理將錯誤處理直接置於編程語言中,有時候甚至置於操作系統中。異常處理不是面向對象的特徵–儘管在面嚮對象語言中異常常被表示成一個對象,異常處理在面嚮對象語言出現之前就已經存在了。

11. 併發編程

頻發的操作不可能允許我們等上一個操作結束才能進行下一個操作,這個時候就需要併發執行,很早計算機就已經有了這個概念,就是在同一個時刻處理多個任務的思想。

12. Java 與 Internet

總結

OOP 和 Java 也許並不適合所有人,重要的是正確評估自己的需求,並決定 Java 是否能夠最好的滿足這些需求,還是使用其他的編程系統纔是更好的選擇,如果知道自己的需求在可預見的未來會變得非常特殊,並且 Java 可能不滿足你的具體限制,那麼就應該考慮其他的選擇了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章