第 1章 面向?qū)ο笏枷?/b>
1.1? 面向?qū)ο笏枷敫攀?/b>
概述
Java語言是一種面向?qū)ο蟮某绦蛟O(shè)計語言,而面向?qū)ο笏枷胧且环N程序設(shè)計思想,我們在面向?qū)ο笏枷氲闹敢?,使用Java語言去設(shè)計、開發(fā)計算機程序。 這里的對象泛指現(xiàn)實中一切事物,每種事物都具備自己的屬性和行為。面向?qū)ο笏枷刖褪窃谟嬎銠C程序設(shè)計過程中,參照現(xiàn)實中事物,將事物的屬性特征、行為特征抽象出來,描述成計算機事件的設(shè)計思想。 它區(qū)別于面向過程思想,強調(diào)的是通過調(diào)用對象的行為來實現(xiàn)功能,而不是自己一步一步的去操作實現(xiàn)。
舉例
洗衣服:
????????面向過程:把衣服脫下來 -->找一個盆-->放點洗衣粉-->加點水-->浸泡10分鐘-->揉一揉-->清洗衣服-->擰干-->晾起來
????????面向?qū)ο螅喊岩路撓聛?-->打開全自動洗衣機-->扔衣服-->按鈕-->晾起來
區(qū)別 :
????????面向過程:強調(diào)步驟。
????????面向?qū)ο螅簭娬{(diào)對象,這里的對象就是洗衣機。
特點
面向?qū)ο笏枷胧且环N更符合我們思考習慣的思想,它可以將復(fù)雜的事情簡單化,并將我們從執(zhí)行者變成了指揮者。面向?qū)ο蟮恼Z言中,包含了三大基本特征,即封裝、繼承和多態(tài)。
1.2? 類和對象
環(huán)顧周圍,你會發(fā)現(xiàn)很多對象,比如桌子,椅子,同學,老師等。桌椅屬于辦公用品,師生都是人類。那么什么是類呢?什么是對象呢?
什么是類
類 :是一組相關(guān)屬性和行為的集合。可以看成是一類事物的模板,使用事物的屬性特征和行為特征來描述該類事物。
現(xiàn)實中,描述一類事物:
????????屬性 :就是該事物的狀態(tài)信息。
????????行為 :就是該事物能夠做什么。
舉例:小貓。
屬性:名字、體重、年齡、顏色。 行為:走、跑、叫。
什么是對象
對象 :是一類事物的具體體現(xiàn)。對象是類的一個實例(對象并不是找個女朋友),必然具備該類事物的屬性
和行為。
現(xiàn)實中,一類事物的一個實例:一只小貓。
舉例:一只小貓。
屬性:tom、5kg、2 years、yellow。 行為:溜墻根走、蹦跶的跑、喵喵叫。
類與對象的關(guān)系
????????類是對一類事物的描述,是 抽象的。
????????對象是一類事物的實例,是 具體的。
????????類是對象的模板,對象是類的實體 。

1.3 類的定義
事物與類的對比
現(xiàn)實世界的一類事物:
屬性:事物的狀態(tài)信息。 行為:事物能夠做什么。
Java中用class描述事物也是如此:
成員變量:對應(yīng)事物的屬性 成員方法:對應(yīng)事物的行為
類的定義格式

定義類 :就是定義類的成員,包括成員變量和成員方法。
成員變量 :和以前定義變量幾乎是一樣的。只不過位置發(fā)生了改變。在類中,方法外。
成員方法 :和以前定義方法幾乎是一樣的。只不過把static去掉,static的作用在面向?qū)ο蠛竺嬲n程中再詳細講解
類的定義格式舉例:


1.4 對象的使用
對象的使用格式
創(chuàng)建對象:

使用對象訪問類中的成員:


成員變量的默認值

1.5 類與對象的練習
定義手機類:

定義測試類


1.6 對象內(nèi)存圖
一個對象,調(diào)用一個方法內(nèi)存圖

兩個對象,調(diào)用同一方法內(nèi)存圖

一個引用,作為參數(shù)傳遞到方法中內(nèi)存圖

1.7 成員變量和局部變量區(qū)別
變量根據(jù)定義位置的不同,我們給變量起了不同的名字。如下圖所示:

在類中的位置不同 重點
????????成員變量:類中,方法外
????????局部變量:方法中或者方法聲明上 (形式參數(shù))
作用范圍不一樣 重點
????????成員變量:類中
????????局部變量:方法中
初始化值的不同 重點
????????成員變量:有默認值
????????局部變量:沒有默認值。必須先定義,賦值,最后使用
在內(nèi)存中的位置不同 了解
????????成員變量:堆內(nèi)存
????????局部變量:棧內(nèi)存
生命周期不同 了解
????????成員變量:隨著對象的創(chuàng)建而存在,隨著對象的消失而消失
????????局部變量:隨著方法的調(diào)用而存在,隨著方法的調(diào)用完畢而消失
第 2章 封裝
2.1? 封裝概述
概述
面向?qū)ο缶幊陶Z言是對客觀世界的模擬,客觀世界里成員變量都是隱藏在對象內(nèi)部的,外界無法直接操作和修改。封裝可以被認為是一個保護屏障,防止該類的代碼和數(shù)據(jù)被其他類隨意訪問。要訪問該類的數(shù)據(jù),必須通過指定的方式。適當?shù)姆庋b可以讓代碼更容易理解與維護,也加強了代碼的安全性。
原則
將屬性隱藏起來,若需要訪問某個屬性,提供公共方法對其訪問。
2.2 封裝的步驟
????????1. 使用? private 關(guān)鍵字來修飾成員變量。
????????2. 對需要訪問的成員變量,提供對應(yīng)的一對? getXxx 方法 、 setXxx 方法。
2.3? 封裝的操作——private關(guān)鍵字
private的含義
????????1. private是一個權(quán)限修飾符,代表最小權(quán)限。
????????2. 可以修飾成員變量和成員方法。
????????3. 被private修飾后的成員變量和成員方法,只在本類中才能訪問。
private的使用格式

1. 使用 private 修飾成員變量,代碼如下:

2. 提供 getXxx 方法 / setXxx 方法,可以訪問成員變量,代碼如下:

2.4 封裝優(yōu)化1——this關(guān)鍵字
我們發(fā)現(xiàn) setXxx 方法中的形參名字并不符合見名知意的規(guī)定,那么如果修改與成員變量名一致,是否就見名知意了呢?代碼如下:

this的含義
this代表所在類的當前對象的引用(地址值),即對象自己的引用。
記住 :方法被哪個對象調(diào)用,方法中的this就代表那個對象。即誰在調(diào)用,this就代表誰。
this使用格式

使用 this 修飾方法中的變量,解決成員變量被隱藏的問題,代碼如下:

2.5 封裝優(yōu)化2——構(gòu)造方法
當一個對象被創(chuàng)建時候,構(gòu)造方法用來初始化該對象,給對象的成員變量賦初始值。
小貼士:無論你與否自定義構(gòu)造方法,所有的類都有構(gòu)造方法,因為Java自動提供了一個無參數(shù)構(gòu)造方法,一旦自己定義了構(gòu)造方法,Java自動提供的默認無參數(shù)構(gòu)造方法就會失效。
構(gòu)造方法的定義格式

構(gòu)造方法的寫法上,方法名與它所在的類名相同。它沒有返回值,所以不需要返回值類型,甚至不需要void。使用構(gòu)造方法后,代碼如下:

注意事項
????????1. 如果你不提供構(gòu)造方法,系統(tǒng)會給出無參數(shù)構(gòu)造方法。
????????2. 如果你提供了構(gòu)造方法,系統(tǒng)將不再提供無參數(shù)構(gòu)造方法。
????????3. 構(gòu)造方法是可以重載的,既可以定義參數(shù),也可以不定義參數(shù)。
2.6 標準代碼——JavaBean
JavaBean 是 Java語言編寫類的一種標準規(guī)范。符合 JavaBean 的類,要求類必須是具體的和公共的,并且具有無參數(shù)的構(gòu)造方法,提供用來操作成員變量的 set 和 get 方法。

編寫符合 JavaBean 規(guī)范的類,以學生類為例,標準代碼如下:

測試類,代碼如下:

