面向對象編程思想的一個基本方法就是抽象。抽象是從眾多的同類事物中抽取出具有共同特徵的過程及方法。
例如:蘋果、香蕉、葡萄等都屬於水果類別,假如我們要給水果找出共同特點,就需要抽取(抽象)蘋果、香蕉、葡萄的共同特徵,捨棄其不同的特徵。一般說來蘋果、香蕉、葡萄具有汁液多、糖分多、並且還含有揮發性芳香物質、可以生食等特點。具備上述特點的一般都可以歸類為水果。

抽象就是對同類事物的概括和歸納,前面例子的蘋果、香蕉、葡萄是現實中的事物,人們在品嘗的同時,抽取它們共有的特點,並起了一個新名稱水果,來概括和歸納具有蘋果、香蕉、葡萄共同特點的所有事物。例如:生梨、桃子也具備蘋果、香蕉、葡萄的共同特點,因此生梨和桃子也可以歸類為水果。
如果以面向對象的編程思想來看前面例子的話,水果可以稱之為類,而蘋果、香蕉、葡萄可以稱之為類的實例或對象。類是抽象出來的事物,現實生活中並不存在,例如水果,水果是人們賦予具有蘋果、香蕉、葡萄等共同特點的名稱,不單指某一事物;對象是指具體的實物或概念,例如蘋果、香蕉、葡萄等對象是實物,而一項政策可能就是一個概念性的對象了,在現實生活中,萬事萬物皆對象,面向對象編程就是模擬現實生活中的一個個對象來編程的。
現在生活中的許多對象都要進行分類,例如:人類、水果類、動物類、汽車類等。
分類的作用主要是為了便於管理和維護。面向對象的編程思想主要是通過模擬現實世界的各個對象來編程的,那麼這些現實世界中的對象是怎樣模擬或映射到計算機中的呢?這就要歸功與面向對象編程思想的基本方法——抽象。
抽象並不是Java語言中所特有的概念,在其它面向對象的語言中,如C++在構建對象時也需要抽象建模。例如:在學生信息管理系統中,需要將學生的共同特徵抽取出來,如學號、學分、性別等特徵,構建學生模型。提煉學生共同特徵的過程就是抽象建模。通過抽象,可以很容易地歸納出事物的共同特徵和行為,以便與其它對象區別開來,這樣抽取出來的特徵和行為在面向對象的編程中叫做屬性和方法。
屬性是指對象具有的各種特徵,學號、 學分、性別等特徵就是學生對象的屬性;行為一般用動詞描述對象的各種操作。
每個對象的屬性都有特定值,根據圖11-2可知,學生甲乙和學生丙丁的學號、學分、性別都不一樣。

■ 知識點撥
事物抽象的過程也是一個裁剪的過程,事物不同的、非本質性的特徵被裁剪掉,留下共同特徵。但共同特徵也是相對的,例如,對於汽車和大米,從買賣的角度看都是商品,都有價格,是他們的共同的特徵,但從其應用方面來看是不同的。所以在抽象時,同與不同,決定於從什麼角度上來抽象,抽象的角度取決於分析問題的目的。
■ 思考與練習
家中都有電視機、冰箱、洗衣機等家用電器,請抽象出電視機、冰箱、洗衣機的共同特徵,作為家用電器類的屬性。