java編程思想1-對象導論

oop引入

	1. 計算機革命起源於機器,編程語言的產生始於對機器的模仿。面向對象程序設計(oop)就是以計算機爲表達媒體的大趨勢中的組成部分
	2. oop允許根據問題來描述問題,而不是根據運行解決方案的計算機來描述問題。oop其實是一種語言抽象,這種思想實質是程序可以通過添加新類型的對象使自身適合某個特定問題
	3. 面向對象五個基本特性:
	    a. 萬物皆爲對象:將對象視爲變量,可以存儲數據,還可以在自身上執行操作,可以從抽取待解決問題的概念化構件視爲程序中對象
	    b. 程序是對象的集合,通過消息來告知彼此要做的事
	    c. 每個對象都有自己的由其他對象所構成的存儲:可以通過創建包含現有對象的包的方式來創建新類型的對象
	    d. 每個對象都擁有其類型:每個對象都是某個類的一個實例
	    e. 某一特定類型的所有對象都可以接收同樣的消息
	4. 每個對象都屬於定義了特性和行爲的某個特定的類,類是具有相同特性和行爲的對象集合

接口引入

	1. 接口確定了某一特定對象所能發出的請求

對象引入

	1. 將對象想象成服務提供者,這樣有助於提高對象內聚性。高內聚是指各方面都組合的很好,不要將過多的功能在放在一個對象裏
	2. 訪問控制的存在原因:
	     a.  只向客戶端程序員暴露必須的部分 ,隱藏其他部分。避免其他人員做破壞
	     b. 允許庫設計者可以該表內部的工作方式而 不用擔心影響到客戶端程序員,接口和實現可以清晰的分離並得以保護
	3. public表示其元素對任何人都可用;private表示除類型創建者和類型的內部方法外任何人都不能訪問的元素protected 表示除類型創建者和類型的內部方法以及繼承的類外任何人都不能訪問的元素;java默認的包訪問權限可以訪問在同一個包中的其他類的成員

繼承引入

	1. 一個基類型可能包含所有導出類型所共享的特性和行爲,然後從基類型導出其他類型進行拓展,通過繼承實現
	2. 基類和導出類具有相同的基礎接口,導出類與基類不僅擁有相同類型,而且擁有相同行爲,並且導出類還可以增加自己的新方法,也可以改變現有基類的方法行爲,稱爲“覆蓋”

多態引入

	1. 面向對象程序設計編譯器不可能產生傳統意義的函數調用。非面向對象編程的編譯器產生的函數調用會引起前期綁定,編譯器將會產生對一個具體函數名字的調用,運行時將這個調用解析到將要被政治性的代碼的絕對地址。而在面向對象程序設計中,到程序運行時才能夠確定代碼的地址,這個採用的是後期綁定的概念。java使用特殊的代碼來替代絕對地址的調用,代碼使用在對象中存儲的信息來計算方法體的地址。
	2. 面向對象程序設計確保被調用方法的存在,並對調用參數和返回值執行類型檢查

單根繼承引入

	1. 保證所有對象都具備某些功能,使垃圾回收器的實現變得容易,因爲可以確定所有對象類型信息,使編程更靈活

參數化類型引入

	1. 參數化類型就是一個編譯器可以自動定製作用於特定類型上的類,這個稱爲泛型

併發引入

	1. 有時把問題切分成多個可獨立運行的部分,從而提高程序的響應能力,這些彼此獨立運行部分稱爲線程
	2. 併發有隱患就是共享資源問題 ,資源可以在使用期間被鎖定,完成後 釋放資源鎖,使其他任務可以使用這項資源
	3. 進程是資源分配的最小單位 ,線程是cpu調度的最小單位。一個進程可以包含多個線程

對象的創建和生命期引入

	1. 如何知道何時銷燬對象:
	   a. 將對象置於堆棧或靜態存儲區域內實現,這樣必須在編寫程序時知道對象確切數量、生命週期和類型
	   b. 在堆的內存池中動態地創建對象,對象信息只有運行時才能知道,因爲存儲空間是在運行 時動態管理的 ,所以需要大量的時間在堆中分配存儲空間,這可能遠遠大於在堆棧中創建存儲空間的時間,堆棧中創建和釋放存儲空間通常需要一套哦彙編指令即可,對應將棧頂指針向下或向上移動 
	   c. java採用動態內存分配 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章