1.抽象過程
Alan kay 總結的面向對象的程式設計語言:
萬物皆為對象。
程式是對象的集合,他們通過發送資訊來告訴彼此所要做的。
每個對象都有自己的由其他對象所構成的存儲。
每個對象都擁有其類型。
某一特定類型的所有對象都可以接受同樣的資訊。
Booch對對象有一個更簡潔的描述:對象是具有狀态,行為和辨別。這意味着每一個對象哪個都可以擁有内部資料(他們給出了該對象的狀态)和方法(它們産生行為),并且每一個對象都可以與其他對象區分開來,就是說每一個對象在記憶體中有唯一的位址。
2.每一個對象都有一個接口
建立抽象資料類型(類)是面向對象程式設計的基本概念之一。
類描述了具有相同特性(資料元素)和行為(功能)的對象集合,是以一個類實際上就是一個資料類型。
面向對象程式設計的挑戰之一,就是問題空間的元素與解空間的對象之間建立一一映射。
3.被隐藏的具體實作
通路控制存在的一個原因是讓用戶端程式員無法觸及他們不應該觸及的部分,第二個原因是允許庫設計者改變類内部的工作方式。
Java用3個關鍵字在類的内部設定邊界:public,private,protected。
public:表示緊随其後的元素對任何人都是可用的。
private:表示除了類建立者和類的内部方法之外,其他人都不能通路的元素。
protected:與private相似,差别在于繼承的類可以通路。
什麼都不加的話,稱為包通路權限,類可以通路同一個包中的其他類成員。
4.複用的具體實作
使用現有類合成新的類稱為組合。如果組合是動态的,則被稱為聚合。
在建立新類時,首先考慮組合,因為他更加靈活。
5.單根繼承結構
單根繼承結構保證所有對象都具備某些功能。
單根繼承結構使垃圾回收器的實作變得容易。
6.容器
不同的容器提供了不同類型的接口和外部行為。
不同類型的容器對某些操作具有不同的效率。
7.參數化類型
Java SE5出現之前,容器中存儲的對象都隻具有Java中的通用類型:Object
Java SE5重大變化之一就是增加了參數化類型 : 範型。ArrayList<?>=new ArrayList<?>();