1. 計算機革命起源於機器,編程語言的產生始於對機器的模仿。面向對象程序設計(oop)就是以計算機爲表達媒體的大趨勢中的組成部分
2. oop允許根據問題來描述問題,而不是根據運行解決方案的計算機來描述問題。oop其實是一種語言抽象,這種思想實質是程序可以通過添加新類型的對象使自身適合某個特定問題
3. 面向對象五個基本特性:
a. 萬物皆爲對象:將對象視爲變量,可以存儲數據,還可以在自身上執行操作,可以從抽取待解決問題的概念化構件視爲程序中對象
b. 程序是對象的集合,通過消息來告知彼此要做的事
c. 每個對象都有自己的由其他對象所構成的存儲:可以通過創建包含現有對象的包的方式來創建新類型的對象
d. 每個對象都擁有其類型:每個對象都是某個類的一個實例
e. 某一特定類型的所有對象都可以接收同樣的消息
4. 每個對象都屬於定義了特性和行爲的某個特定的類,類是具有相同特性和行爲的對象集合
接口引入
1. 接口確定了某一特定對象所能發出的請求
對象引入
1. 將對象想象成服務提供者,這樣有助於提高對象內聚性。高內聚是指各方面都組合的很好,不要將過多的功能在放在一個對象裏
2. 訪問控制的存在原因:
a. 只向客戶端程序員暴露必須的部分 ,隱藏其他部分。避免其他人員做破壞
b. 允許庫設計者可以該表內部的工作方式而 不用擔心影響到客戶端程序員,接口和實現可以清晰的分離並得以保護
3. public表示其元素對任何人都可用;private表示除類型創建者和類型的內部方法外任何人都不能訪問的元素protected 表示除類型創建者和類型的內部方法以及繼承的類外任何人都不能訪問的元素;java默認的包訪問權限可以訪問在同一個包中的其他類的成員
1. 如何知道何時銷燬對象:
a. 將對象置於堆棧或靜態存儲區域內實現,這樣必須在編寫程序時知道對象確切數量、生命週期和類型
b. 在堆的內存池中動態地創建對象,對象信息只有運行時才能知道,因爲存儲空間是在運行 時動態管理的 ,所以需要大量的時間在堆中分配存儲空間,這可能遠遠大於在堆棧中創建存儲空間的時間,堆棧中創建和釋放存儲空間通常需要一套哦彙編指令即可,對應將棧頂指針向下或向上移動
c. java採用動態內存分配