面向對象是一種主流的編程思維,其核心是把現實世界中的對象,對象之間的關係模擬到程序世界中,構造一個軟件系統。
Java 是一種典型的面向對象編程語言。這篇文章主要是來初步理解一下面向對象的思維爲下面的內容先給一個基礎。針對 Java 面向對象編程的更多內容,會在後面的文章裏面詳細解釋。
面向對象的思維裏面有兩個重要的概念,對象和類。下面,逐個理解這兩個概念。
1. 什麼是對象?
一個鼠標,一個小狗,一個男孩,一個足球,美女和汽車,他們都是一個對象,這些都是我們現實世界中客觀存在的東西,能看得見,摸得着。他們都稱之爲“對象”。每個對象都有他的屬性和行爲,比如小狗,棕色的皮毛,圓圓的眼睛,這是它的屬性,小狗可以跑,可以叫,這是它的行爲。什麼是對象,現在很清楚了:
對象:世界中客觀存在的東西,具有自己的屬性和行爲
2. 什麼是類?
下面來理解另外一個重要的概念:類 ,來,先看一下這個圖片:美女和汽車,是這個人的認知,是抽象的概念,不是客觀存在的具體事物。什麼是美女呢,很多女明星都可以稱之爲美女,五官精緻,身材好,所有我們稱之爲美女,此處的美女不是具體指某一個真實的人,而是一個統稱,一個認知對吧。在這裏“美女”就是一個類的概念,它是一個對具體對象特性的一個抽象概括,是一個概念。同理,這裏的汽車也是一個類的概念。
類:對現實世界對象的抽象總結,一個概念,不是客觀存在的。
3. 類和對象的關係
OK,接下來,討論一下類和對象的關係。上面這個圖片中男孩腦袋中產生的一個概念“girl” 是一個類的概念,這個概念具有世界上所有女孩的特徵。左邊幾個不同國家的女孩,則是真實存在的對象,是對“girl”這個概念(類)的具體體現。
再看,汽車的小圖,虛線的 car 則是一個類的概念,這裏可以把它理解爲汽車的設計,也是模板,這裏麪包含了所有汽車共有的一些屬性和行爲,右邊三個不同顏色不同品牌的汽車,則是真實的對象。他們是根據左邊的汽車的模板(類),而生產的不同的可以使用的汽車。所有這裏可以理解爲類是對象的模板,通過類,可以創建具有共同標準,又有個性差異的對象。
OK,那麼來總結一下類和對象的關係:
類是描述一類對象屬性和行爲的模板(藍圖或者設計),對象是類的一個具體呈現(實現)
4. Java 的面向對象
到這裏,已經理解了面向對象的幾個重要的概念。那麼 Java 編程中到底是怎麼來用“面向對象”這種思維模式來編程的呢?
OK,假如你是一個外星人,剛來到地球,看到馬路上跑的四個輪子的汽車,搞不懂是什麼。這個時候,我用人類的語言來給你解釋,像圖片中左邊部分那樣,“汽車是一類什麼東西”,那麼對於 Java 的事件,則會用 public class Car {}
這段代碼來描述一個類,下面一個汽車的屬性和行爲,在 Java 語言中同樣也有對應的映射,就是變量和函數。
其實,把人類世界對象,抽象映射到程序世界中的過程,就是面向對象的思維。這個行爲一個專業的名字,稱爲“建模”。之後,我們再用 Java 編程語言,把這種映射編寫出來,就是 Java 的面向對象編程啦。好,先理解到這,就可以。
Java面向對象的編程,就像用 Java 語言講故事,把現實世界抽象、映射到 Java 的世界。
5. 使用對象
現在,已經對面向對象有一個不錯的理解了。那麼在 Java 中怎麼來使用對象呢,在上面的過程中,我們編寫了一個 汽車的類(Car),怎麼樣根據這個汽車的模板,來生產汽車呢。
Java 中創建生產對象的方法,就是使用類的構造方法,來構造對象,對應的代碼是這個樣子:Car polo = new Car(180,"green", "polo");
, 這句代碼的意思是,構建了一個速度是180,顏色是green,品牌是polo的汽車對象,並給這個對象指定了一個名字:polo。這個過程也叫new一個汽車對象polo
只有產生對象之後,纔可以調用該對象的方法
polo.startup();
這句代碼就意思,讓polo這個車啓動。也就是調用了polo對象的startup方法。
下面是完整的代碼,你可以自己來編寫幾遍,然後執行它。直到你很熟練的自己能夠完成。
public class Car {
// 汽車的速度(屬性)
int speed;
// 汽車的顏色(屬性)
String color;
// 汽車的品牌(屬性)
String brand;
//構造方法,用來創造對象
public Car(int speed,String color, String brand) {
this.brand = brand;
this.color = color;
this.speed = speed;
}
// 汽車的啓動函數(行爲)
void startup() {
System.out.println("汽車啓動了......");
System.out.println("品牌:" + this.brand);
System.out.println("顏色:" + this.color);
System.out.println("速度:" + this.speed);
}
// 汽車的行駛函數(行爲)
void run(int speed) {
System.out.println("正以" + speed + "的速度狂奔");
}
public static void main(String[] args) {
// 創建了一個汽車對象:polo
Car polo = new Car(180,"green", "polo");
// 創建了一個汽車對象:mini
Car mini = new Car(120,"blue","mini");
// 創建了一個汽車對象:beetle
Car beetle = new Car(100,"red","beetle");
// 調用對象polo的啓動方法(汽車的啓動行爲)
polo.startup();
polo.run(200);
mini.startup();
mini.run(80);
beetle.startup();
beetle.run(130);
}
}
控制檯輸出:
汽車啓動了......
品牌:polo
顏色:green
速度:180
正以200的速度狂奔
汽車啓動了......
品牌:mini
顏色:blue
速度:120
正以80的速度狂奔
汽車啓動了......
品牌:beetle
顏色:red
速度:100
正以130的速度狂奔
先使用對象的模板(類)創造對象,之後可以調用對象的行爲,讀取對象的屬性。扣扣交流羣:468439140
總結
OK,最後總結一下幾點。來加深一下印象。
- 對象:世界中客觀存在的東西,具有自己的屬性和行爲。
- 類:對現實世界對象的抽象總結,一個概念,不是客觀存在的。
- 類和對象:類是描述一類對象屬性和行爲的模板(藍圖或者設計),對象是類的一個具體呈現(實現)。
- Java面向對象的編程:就像用 Java 語言講故事,把現實世界抽象、映射到 Java 的世界。
- 對象的使用:先使用對象的模板(類)創造對象,之後纔可以調用對象的行爲,讀取對象的屬性。
在後面的內容裏,會更多更深入的來講 Java 的面向對象編程。