多角度闡述Java面向對象

    很多人在學習Java的過程中不斷地聽說對象這個字眼,尤其是從學習例如C語言這樣面向過程的語言轉而學習Java的時候更是從心裏無法接受這一嶄新的、抽象的、不明所以的概念,使得初學者對Java的學習產生厭倦的心理,甚至很多已經學習Java很久的人,依然對面向對象這一概念有些模糊。本文將從多個維度來闡釋Java面向對象的含義。

一、對象是一種思考方式

    首先先對“對象”這一抽象又晦澀的名詞進行一下解釋:對象就是思考時作爲目標的事物。從這個概念中我們能夠提煉出來這樣兩點:

1、對象是思考時的產物。例如你想要策劃一場舞臺劇,那麼你的腦海裏會出現舞臺、燈光、人員、時間安排、出場順序... ...這些腦海裏出現的東西都可以叫做對象。這裏要注意一件事情,那就是對象只是一種思考的產物,它並不代表一個真實的舞臺或者真是的人員,它只是一個思路、一個模板,這點在後面講到的具體實現裏大家可以再次體會。

2、對象是組成一件複雜問題的最小邏輯單位。在生活中經常會看到這樣一種失敗的策劃者,在考慮一個問題地時候經常會扯到其他的問題上,讓人感覺思路混亂,抓不住重點,這就是他不具備面向對象的思考方式,舞臺就是舞臺,燈光就是燈光,至於兩者之間的交互,要設計好單獨的業務邏輯。好能夠讓各個模塊的負責人各司其職。

    面向對象就是爲了打造這樣一個編程的思考方式,因爲隨着計算機的發展,單打獨鬥的軟件開發已經不復存在了,一個大型軟件不可能脫離開團隊,而面向對象將問題中的關鍵點抽象出來,形成一個個單獨的模塊,這就是面向對象的思考模式,也就是軟件工程中全書都在貫徹的一個思想------鬆耦合。

二、對象是數據和函數的集合

    說了這麼多對象的意義,也應該說一下面向對象在Java中的具體實現了。前文也說到了對象是由“事”和“物”組成的,這樣的名詞在計算機裏對應着我們的數據和對這些數據需要進行的操作。如針對學生這樣的對象,我們要考慮他的名字、年齡、性別等等的一系列信息,而對於一個學生的處理,當然也少不了獲得他的信息和存儲他的信息這樣的操作,而這一系列的數據信息以及操作便構成了一個對象。

    因此對於一個學生表示爲對象應該是這樣的(簡易版,僅作示例用):

public class Student {
    String name;
    int age;
    char sex;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public char getSex() {
        return sex;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }
}

三、對象是指針

    C語言作爲一門基礎語言相信大多數人都學習過(沒學過請忽略此部分)。

    首先,再次明確一個問題,對象是一個抽象概念,它並不存在真正的數據,而只是一個藍圖、一個模板。上文所展示的那個Student對象,僅僅是對一個學生需要有什麼信息以及操作做了一個規劃。單純的這麼說我知道是很晦澀的,但是我們去挖掘對象的實質的時候我們就可以很輕鬆的理解了。

    我們回想C語言指針的使用方式,一個struct STUDENT *類型的指針變量在定義的時候真的會有一個STUDENT結構體類型的數據隨之產生麼,答案必然是否定的,此時在內存中僅僅存在一個struct STUDENT *類型的,四字節的指針空間,Java中對象也是如此,它僅僅是一個------指針。只有在C語言中malloc()函數申請空間、Java中調用了new()函數之後纔會使C語言中的指針、Java中的對象指向一個佔用內存的一段真正的數據信息。這也是我們Java中常說的“實例化”。

    因此,雖說Java封裝了指針,使我們看不見指針,但是,Java對於指針的使用絲毫不差於C語言。再次強調,Java中的對象不是一段真實的數據,只是一個指針,只有實例化後的對象實例纔是真正的數據信息。

四、對象是開發模式

    面向對象的思想被設計出來是爲了適應大型工程,其一個最基本邏輯就是“鬆耦合”,這種思想已經慢慢地演化成一種開發模式,如今的企業級開發量級是越來越大,僅僅對一個“Student”這樣的小問題進行對象的抽象已經不足以解決更大型的工程了,因此涌現了大量的框架和方法。但這些框架的思想無一不是爲了降低模塊之間的耦合性,使得開發更加簡便。儘管各種框架層出不窮,各種企業開發工具也越來越多,但是思想仍然與面向對象的思想如出一轍,歸根結底都是區分不同模塊所要負責的任務進行提取和抽象,從而達到分而治之的目的,使得程序員之間能夠輕鬆協作,從而縮短開發時間,爲公司帶來更大的經濟收益。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章