
面向?qū)ο笫且环N主流的編程思維,其核心是把現(xiàn)實(shí)世界中的對(duì)象,對(duì)象之間的關(guān)系模擬到程序世界中,構(gòu)造一個(gè)軟件系統(tǒng)。
Java 是一種典型的面向?qū)ο缶幊陶Z(yǔ)言。這篇文章主要是來(lái)初步理解一下面向?qū)ο蟮乃季S為下面的內(nèi)容先給一個(gè)基礎(chǔ)。針對(duì) Java 面向?qū)ο缶幊痰母鄡?nèi)容,會(huì)在后面的文章里面詳細(xì)解釋。
面向?qū)ο蟮乃季S里面有兩個(gè)重要的概念,對(duì)象和類。下面,逐個(gè)理解這兩個(gè)概念。
1. 什么是對(duì)象?
一個(gè)鼠標(biāo),一個(gè)小狗,一個(gè)男孩,一個(gè)足球,美女和汽車,他們都是一個(gè)對(duì)象,這些都是我們現(xiàn)實(shí)世界中客觀存在的東西,能看得見(jiàn),摸得著。他們都稱之為“對(duì)象”。每個(gè)對(duì)象都有他的屬性和行為,比如小狗,棕色的皮毛,圓圓的眼睛,這是它的屬性,小狗可以跑,可以叫,這是它的行為。什么是對(duì)象,現(xiàn)在很清楚了:
對(duì)象:世界中客觀存在的東西,具有自己的屬性和行為

2. 什么是類?

下面來(lái)理解另外一個(gè)重要的概念:類 ,來(lái),先看一下這個(gè)圖片:美女和汽車,是這個(gè)人的認(rèn)知,是抽象的概念,不是客觀存在的具體事物。什么是美女呢,很多女明星都可以稱之為美女,五官精致,身材好,所有我們稱之為美女,此處的美女不是具體指某一個(gè)真實(shí)的人,而是一個(gè)統(tǒng)稱,一個(gè)認(rèn)知對(duì)吧。在這里“美女”就是一個(gè)類的概念,它是一個(gè)對(duì)具體對(duì)象特性的一個(gè)抽象概括,是一個(gè)概念。同理,這里的汽車也是一個(gè)類的概念。
類:對(duì)現(xiàn)實(shí)世界對(duì)象的抽象總結(jié),一個(gè)概念,不是客觀存在的。
3. 類和對(duì)象的關(guān)系

OK,接下來(lái),討論一下類和對(duì)象的關(guān)系。上面這個(gè)圖片中男孩腦袋中產(chǎn)生的一個(gè)概念“girl” 是一個(gè)類的概念,這個(gè)概念具有世界上所有女孩的特征。左邊幾個(gè)不同國(guó)家的女孩,則是真實(shí)存在的對(duì)象,是對(duì)“girl”這個(gè)概念(類)的具體體現(xiàn)。
再看,汽車的小圖,虛線的 car 則是一個(gè)類的概念,這里可以把它理解為汽車的設(shè)計(jì),也是模板,這里面包含了所有汽車共有的一些屬性和行為,右邊三個(gè)不同顏色不同品牌的汽車,則是真實(shí)的對(duì)象。他們是根據(jù)左邊的汽車的模板(類),而生產(chǎn)的不同的可以使用的汽車。所有這里可以理解為類是對(duì)象的模板,通過(guò)類,可以創(chuàng)建具有共同標(biāo)準(zhǔn),又有個(gè)性差異的對(duì)象。
OK,那么來(lái)總結(jié)一下類和對(duì)象的關(guān)系:
類是描述一類對(duì)象屬性和行為的模板(藍(lán)圖或者設(shè)計(jì)),對(duì)象是類的一個(gè)具體呈現(xiàn)(實(shí)現(xiàn))
4. Java 的面向?qū)ο?/h2>
到這里,已經(jīng)理解了面向?qū)ο蟮膸讉€(gè)重要的概念。那么 Java 編程中到底是怎么來(lái)用“面向?qū)ο蟆边@種思維模式來(lái)編程的呢?
OK,假如你是一個(gè)外星人,剛來(lái)到地球,看到馬路上跑的四個(gè)輪子的汽車,搞不懂是什么。這個(gè)時(shí)候,我用人類的語(yǔ)言來(lái)給你解釋,像圖片中左邊部分那樣,“汽車是一類什么東西”,那么對(duì)于 Java 的事件,則會(huì)用 public class Car {}這段代碼來(lái)描述一個(gè)類,下面一個(gè)汽車的屬性和行為,在 Java 語(yǔ)言中同樣也有對(duì)應(yīng)的映射,就是變量和函數(shù)。
其實(shí),把人類世界對(duì)象,抽象映射到程序世界中的過(guò)程,就是面向?qū)ο蟮乃季S。這個(gè)行為一個(gè)專業(yè)的名字,稱為“建?!?。之后,我們?cè)儆?Java 編程語(yǔ)言,把這種映射編寫出來(lái),就是 Java 的面向?qū)ο缶幊汤病:?,先理解到這,就可以。

Java面向?qū)ο蟮木幊?,就像?Java 語(yǔ)言講故事,把現(xiàn)實(shí)世界抽象、映射到 Java 的世界。
5. 使用對(duì)象
現(xiàn)在,已經(jīng)對(duì)面向?qū)ο笥幸粋€(gè)不錯(cuò)的理解了。那么在 Java 中怎么來(lái)使用對(duì)象呢,在上面的過(guò)程中,我們編寫了一個(gè) 汽車的類(Car),怎么樣根據(jù)這個(gè)汽車的模板,來(lái)生產(chǎn)汽車呢。

Java 中創(chuàng)建生產(chǎn)對(duì)象的方法,就是使用類的構(gòu)造方法,來(lái)構(gòu)造對(duì)象,對(duì)應(yīng)的代碼是這個(gè)樣子:Car polo = new Car(180,"green", "polo");, 這句代碼的意思是,構(gòu)建了一個(gè)速度是180,顏色是green,品牌是polo的汽車對(duì)象,并給這個(gè)對(duì)象指定了一個(gè)名字:polo。這個(gè)過(guò)程也叫new一個(gè)汽車對(duì)象polo
只有產(chǎn)生對(duì)象之后,才可以調(diào)用該對(duì)象的方法
polo.startup();
這句代碼就意思,讓polo這個(gè)車啟動(dòng)。也就是調(diào)用了polo對(duì)象的startup方法。
下面是完整的代碼,你可以自己來(lái)編寫幾遍,然后執(zhí)行它。直到你很熟練的自己能夠完成。
public class Car {
// 汽車的速度(屬性)
int speed;
// 汽車的顏色(屬性)
String color;
// 汽車的品牌(屬性)
String brand;
//構(gòu)造方法,用來(lái)創(chuàng)造對(duì)象
public Car(int speed,String color, String brand) {
this.brand = brand;
this.color = color;
this.speed = speed;
}
// 汽車的啟動(dòng)函數(shù)(行為)
void startup() {
System.out.println("汽車啟動(dòng)了......");
System.out.println("品牌:" + this.brand);
System.out.println("顏色:" + this.color);
System.out.println("速度:" + this.speed);
}
// 汽車的行駛函數(shù)(行為)
void run(int speed) {
System.out.println("正以" + speed + "的速度狂奔");
}
public static void main(String[] args) {
// 創(chuàng)建了一個(gè)汽車對(duì)象:polo
Car polo = new Car(180,"green", "polo");
// 創(chuàng)建了一個(gè)汽車對(duì)象:mini
Car mini = new Car(120,"blue","mini");
// 創(chuàng)建了一個(gè)汽車對(duì)象:beetle
Car beetle = new Car(100,"red","beetle");
// 調(diào)用對(duì)象polo的啟動(dòng)方法(汽車的啟動(dòng)行為)
polo.startup();
polo.run(200);
mini.startup();
mini.run(80);
beetle.startup();
beetle.run(130);
}
}
控制臺(tái)輸出:
汽車啟動(dòng)了......
品牌:polo
顏色:green
速度:180
正以200的速度狂奔
汽車啟動(dòng)了......
品牌:mini
顏色:blue
速度:120
正以80的速度狂奔
汽車啟動(dòng)了......
品牌:beetle
顏色:red
速度:100
正以130的速度狂奔
先使用對(duì)象的模板(類)創(chuàng)造對(duì)象,之后可以調(diào)用對(duì)象的行為,讀取對(duì)象的屬性。
總結(jié)
OK,最后總結(jié)一下幾點(diǎn)。來(lái)加深一下印象。
- 對(duì)象:世界中客觀存在的東西,具有自己的屬性和行為。扣扣交流群:468439140
- 類:對(duì)現(xiàn)實(shí)世界對(duì)象的抽象總結(jié),一個(gè)概念,不是客觀存在的。
- 類和對(duì)象:類是描述一類對(duì)象屬性和行為的模板(藍(lán)圖或者設(shè)計(jì)),對(duì)象是類的一個(gè)具體呈現(xiàn)(實(shí)現(xiàn))。
- Java面向?qū)ο蟮木幊蹋壕拖裼?Java 語(yǔ)言講故事,把現(xiàn)實(shí)世界抽象、映射到 Java 的世界。
- 對(duì)象的使用:先使用對(duì)象的模板(類)創(chuàng)造對(duì)象,之后才可以調(diào)用對(duì)象的行為,讀取對(duì)象的屬性。
在后面的內(nèi)容里,會(huì)更多更深入的來(lái)講 Java 的面向?qū)ο缶幊獭?/p>