7. 初步理解面向?qū)ο?【連載 7】

從零開(kāi)始學(xué)Java封面7.jpg

面向?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ì)象:世界中客觀存在的東西,具有自己的屬性和行為

1.jpg

2. 什么是類?

2.jpg

下面來(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)系

3.jpg

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ū)ο缶幊汤病:?,先理解到這,就可以。

4.jpg

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)汽車呢。

5.jpg

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)加深一下印象。

  1. 對(duì)象:世界中客觀存在的東西,具有自己的屬性和行為。扣扣交流群:468439140
  2. 類:對(duì)現(xiàn)實(shí)世界對(duì)象的抽象總結(jié),一個(gè)概念,不是客觀存在的。
  3. 類和對(duì)象:類是描述一類對(duì)象屬性和行為的模板(藍(lán)圖或者設(shè)計(jì)),對(duì)象是類的一個(gè)具體呈現(xiàn)(實(shí)現(xiàn))。
  4. Java面向?qū)ο蟮木幊蹋壕拖裼?Java 語(yǔ)言講故事,把現(xiàn)實(shí)世界抽象、映射到 Java 的世界。
  5. 對(duì)象的使用:先使用對(duì)象的模板(類)創(chuàng)造對(duì)象,之后才可以調(diào)用對(duì)象的行為,讀取對(duì)象的屬性。

在后面的內(nèi)容里,會(huì)更多更深入的來(lái)講 Java 的面向?qū)ο缶幊獭?/p>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容