1. 程式人生 > >Java編程思想總結筆記The first chapter

Java編程思想總結筆記The first chapter

hub 活性 調用 cnblogs protected 目標 java編程 資源 private

總覺得書中太啰嗦,看完總結後方便日後回憶,本想偷懶網上找別人的總結,無奈找不到好的,只好自食其力,盡量總結得最好。

第一章 對象導論

看到對象導論覺得這本書技術分享

目錄:

1.1 抽象過程
1.2 每個對象都有一個接口
1.3 每個對象都提供服務
1.4 被隱藏的具體實現
1.5 復用具體實現
1.6 繼承
1.7 伴隨多態的可互換對象
1.8 單根繼承結構
1.9 容器
1.10 對象的創建和生命期
1.11 異常處理:處理錯誤
1.12 並發編程
1.13 Java與Internet
1.14 總結


覺得看完終於要精通Java了,然而本章只是介紹開發方法概述在內的OOP的基本概念,了解對象的重要性。


1.1 抽象過程

通過其他語言的缺點來說明面向對象語言的好。

匯編語言是對底層機器的輕微抽象、命令式語言(如C、BASIC)是對匯編語言的一種抽象,匯編語言直接控制計算機的硬件,命令式語言則基於計算機結構解決問題。OOP語言基於問題的結構解決問題,不會受限於任何特定類型的問題。

1.2 每個對象都有一個接口

接口:確定了對某一特定對象所能發出的請求 對象:類型名稱

看文字描述已經上升到哲學問題,從下面例子很好理解。

Light lt = new Light(); //對象
lt.on;//接口向對象發出請求

技術分享

1.3 每個對象都提供服務

好處:1、有助於提高軟件的內聚性 2、每個對象都可以很好的完成一項任務,但是它並不試圖做更多的事情。

理解:設計一個音樂播放器,有歌詞顯示、播放,暫停、背景顯示(服務),這時不要只提供一個對象(它並不試圖做更多的事情),可以提供三個對象,完成三個服務,三個對象提供三個服務完成一個音樂播放器(內聚性)。

1.4 被隱藏的具體實現

從Github下載一個框架,我的目標是實現快速應用開發,框架只需向我提供方法的調用即可,其他的隱藏了也不會影響我的調用

訪問權限:public > protected(包+基類) > 包訪問權限(沒有關鍵詞時默認) > private

1.5 復用具體實現

復用指在一個類中使用繼承或者組合。

  • 繼承 ----is a 的關系 荔枝是水果
  • 組合 ----has a 的關系 有一種睡覺的方式是趴著

1.6 繼承

從父類中派生出子類,子類能吸收父類的數據屬性和行為,並能擴展新的能力。

1.7 伴隨多態的可互換對象

class Shape{ 
  draw();
  erase();
  move();
  getColor();
  setColor();
}
void doSomething(Shape shape){
shape.erase();
//...
shape.draw();
}

Circle circle = new Circle(); //父類為Shape
Triangle triangle = new Triangle();  //父類為Shape
Line line = new Triangle();  //父類為Shape
doSomething(circle);
doSomething(triangle);
doSomething(line);

對doSomething的調用會自動地正確處理,而不管對象的確切類型(可互換對象)。

doSomething(Shape shape)的執行是指你是Shape類或者父類為Shape,而不是你是Circle類就執行這樣,你是Triangle 類就執行那樣。理解了可以去看設計模式之策略模式。

這裏還涉及到向上轉型,如下圖:

技術分享

1.8 單根繼承結構

1、所有類都繼承自單一的基類

public class JianCheng extends Object {  
}  
public class JianCheng {  
    public static void main(String[] args) {  
        JianCheng jiancheng= new JianCheng();  
        System.out.println(JianCheng instanceof Object);  
    }  
}  

輸出:true //說明 JianCheng 類默認繼承 Object

2、保證所有對象具有某些功能

Object 的方法會被子類所繼承,例如: clone()、equals(Object obj)、toString() 等方法。

3、垃圾回收變得容易

對象保證有其(Object)類型信息,因此不會因無法確定對象的類型而陷入僵局。這對於系統級操作顯得十分重要(如異常處理)。

1.9 容器

持有對其他對象的引用稱為容器(集合),例如List(用於存儲序列),Map(也被稱為關聯數組,用來建立對象之間的關聯),Set(每種對象類型只持有一個),以及諸如隊列、樹、堆棧等更多的構件。

ArrayList與LinkedList的比較,前者是數組的形狀,隨機訪問元素開銷小,但插入、刪除操作開銷大。後者是鏈表形狀,插入、刪除操作方便。

1.10 對象的創建和生命期

認識對象置於堆棧和堆的區別

  • 堆棧 --間分配和釋放置於優先考慮的位置,犧牲了靈活性,因為必須知道對象確切的數量、生命周期和類型。
  • 堆 --內存池中動態的創建對象,運行時才知道對象的數量,生命周期和類型。動態管理所以需要大量的時間在堆中分配存儲空間,但創建存儲空間和釋放存儲空間非常方便。

Java 采用了動態內存分配的方式,使用 new 關鍵字創建對象,編譯器可以確定對象存活的時間,並通過“垃圾回收器機制”自動銷毀它。

1.11 異常處理:處理錯誤

異常是一種對象,從出錯地點被拋出,並被特定類型的錯誤異常處理器捕獲,通過try--catch或者throw。異常處理就像是與程序正常執行路徑並行的、在錯誤發生時執行的另一條路徑。

Java代碼重沒有編寫正確的處理異常的代碼,那麽就會得到一條編譯時的出錯消息。例如:IOException,ClassCastException(類轉換異常),NullPointerException(空指針異常)等。

1.12 並發編程

同一時刻處理多個任務的思想,也就是多線程運行。

同步多線程運行有一個隱患,共享資源。A本來想使用a=Love You 但在某個線程導致a = hate you 然後A使用了,這樣A肯定告白失敗。

1.14 總結

第一章全是理論知識,而且很多知識點明明很容易卻長篇大論導致難以理解,幹貨有卻夾雜太多虛的了。

技術分享

轉載註明:http://www.cnblogs.com/wujiancheng/

Java編程思想總結筆記The first chapter