摘自《其實你應該這樣學Java》 10.1 面向對象 面向對象的開發方法,是將客觀世界看作由一個個對象組成,每個對象都有自身的特點規律(屬性、行為)、同時可以通過外部介面同外部聯繫。所有相同類型的對象抽象出一個高層的概念——類,由類生成具體的一個個對象。 例子:“人”,就是一個抽象的概念。“人”不是 ...
摘自《其實你應該這樣學Java》
10.1 面向對象
面向對象的開發方法,是將客觀世界看作由一個個對象組成,每個對象都有自身的特點規律(屬性、行為)、同時可以通過外部介面同外部聯繫。所有相同類型的對象抽象出一個高層的概念——類,由類生成具體的一個個對象。
例子:“人”,就是一個抽象的概念。“人”不是具體指哪個人,而是所有人的抽象,具有四肢、面貌等屬性,以及吃飯、睡覺、思考等動作行為。“人”有自己的身體、思想等內部規律,也有眼、口、手等跟外界打交道的介面。由“人”可以具體到“張三”、“李四”等,他們就有同樣的屬性和行為,只是屬性和行為的值不同而已。通過眼、口、手的介面,他們可以互相聯繫,傳遞消息。
面向對象有四大特點:抽象、封裝、繼承、多態。
抽象是指同類事物共有的屬性和方法。通過抽象,可以把不重要的細節忽略,只關註核心性質。
例如:“狗”沒有身高、毛色等具體值,只是一個概念,由此概念可以派生出多種多樣的狗的類型。這就是抽象的作用。
封裝是一種很好的模塊化方法。封裝就是把事物本身的屬性和方法包含在一起,形成一個獨立的模塊。這樣,所建立的模塊如有問題,就只用修改這一個模塊,而不用修改整個運行環境。
例如:發電機可以獨立存在,有其特有的屬性和方法。我們只跟發電機有很少的交互介面:註入燃料,輸出電能。如果發電機出故障,可以更換髮電機,而不用更改所有使用發電機的設備。
繼承是由已有的抽象事物創建新的抽象事物的過程。通過繼承,我們不用再描述“獅子狗”的種種特性,而是只要說明它是繼承自“狗”的概念,併在此概念上描述所增加的部分新的特性,就可以把“獅子狗”描述清楚。通過層層抽象,將各種事物都能儘量簡單而精確地描述清楚。
多態是指同一名稱動作,在不同情況下有不同行為的現象。好處是可以將動作也形成抽象的含義,使用戶只關心用什麼動作,而不用關心是如何實現的。不懂
10.2 類
10.2.1 類就是具有相同屬性和方法的事物的集合的抽象。類不是實體,不能直接運行。但可由類生成實體(對象),這個實體就可以在系統中運行了。
10.2.2 類的定義 類修飾符 class 類名
{
//類體
}
類體一般由成員變數和成員方法組成。
10.2.3 成員變數是在類中定義的變數。註:成員變數不是在成員方法中定義的變數。
1 public class Example1001 2 { 3 public int a; //成員變數 4 public static void main(String[] args) 5 { 6 int b; //局部變數 7 } 8 }
只要定義了成員變數,它就可以在類內使用,無論在成員方法內部還是外部。而局部變數只能在所在的小模塊內使用。
成員變數定義後就會有初始值:int——0,double——0.0,boolean——false
10.2.4 成員方法
成員修飾符 返回量類型 成員方法名(參數列表)
{
成員方法體
}
方法體內定義的變數就是局部變數
10.2.5 內部類——Java支持在類中再生成類,這種在類中創建的類稱為內部類。相應地,在外面的類稱為外部類。
內部類的定義形式如同一般的類,使用時需要註明所在的外部類的類名。