對JAVA的一些個人總結——物件導向

夜孤黎發表於2015-07-21

    學習安卓開發有一定時間了,越來越感覺有一個好的JAVA基礎是一件很重要的事情,不論是在開發中,還是在面試中。所以在這裡記錄一下個人覺得JAVA基礎中比較重要的部分。

    一、物件導向的概念:

     物件導向是JAVA中非常重要的一個概念,可以說理解了何為物件之後,對於一些程式碼與功能的實現就能有比較深刻的理解了。在現實生活中,任何一個有生命或是沒有生命的實體都可以用物件來表示,比方說每個人、每張桌子、每幅畫等,這些個體都有屬於他自身的一些屬性(比如說人的身高、年齡,桌子的形狀、重量,畫的顏色、尺寸等等)以及行為(比如人吃飯、睡覺、講話等等),這些屬性伴隨著這個實體一起構成了一個實體的物件。接下來我們再來對這些物件進行一個抽象,抽象也就是指這個物件所擁有的的共性,比如說每個人的共性就是我們都是人類、不管方桌子還是圓桌子都是桌子,這樣我們就有了類的概念——即類是物件的抽象。最後我們可以得到物件與類之間的關係,物件是類的例項,例項的抽象是類。

   二、物件導向的三大特性:

    我們都知道物件導向有三大特性,分別是封裝、繼承和多型,可以說這三大特性穩固了物件導向技術在如今的程式開發中的重要地位。

    1、封裝:

    封裝是物件導向的特徵之一,是物件和類概念的主要特性,是指把客觀存在的事物、實體封裝成抽象的類,並且這些類可以把自己的資料和方法只允許可信的類或者物件操作,而對不可信的類和物件進行隱藏。在Java的類中用來定義成員的訪問許可權屬性有四種:public, protected, <default>, private,這四種屬性的訪問許可權等級依次降低。

    2、繼承:

    物件導向程式語言的一個主要功能就是繼承,它可以實現自身不但可以使用現有類的所有功能,並且在無需重新編寫原來的類的情況下對這些功能進行擴充套件。通過繼承建立的新類成為“子類”,被繼承的類則被稱為“父類”或“超類”,子類對於父類的關係應為“屬於”的關係,比如說科學家、運動員都可以繼承“person”類,因為不管身份有什麼區別,他們都屬於人類,但是腿、手掌是不能繼承“person”類,因為他們只是人身體的組成部分但卻不屬於人類。子類可以繼承自一個已經實現功能的父類,這樣子類可以不用編寫額外程式碼就可以直接使用父類的方法;子類同樣也可以繼承自一個抽象的介面,但是這樣的的話子類只能使用父類的屬性和方法的名稱,子類必須要提供實現父類中宣告的方法的能力。

    3、多型:

    多型是指可以將父類物件設定成為和一個或更多的子類物件相等的技術,允許不同類的物件對同一訊息做出響應,即同一訊息可以根據傳送物件的不同而呼叫不同的函式方法。實現多型有兩種方式:過載和覆蓋。覆蓋是指子類可以重新定義父類中的虛擬函式的這一做法,當子類重新定義了父類中的虛擬函式後,父類指標便可以根據賦給它的不同的子類指標,動態的呼叫屬於子類的該函式。而過載是指允許存在多個同名的函式,但這些函式的參數列不同(或許引數個數不同,或許引數型別不同,或許兩者都不同),這樣便可以實現在呼叫同一個函式方法時根據所傳引數的型別、個數不同從而實現不同的功能。


    通過分析可以知道,封裝可以隱藏實現的細節,使得程式碼模組化,繼承則可以擴充套件已存在的程式碼模組,它們的目的都是為了程式碼的重用。而多型是為了實現介面的重用,因為多型可以保證類在繼承和派生之後在使用其中任一一個類的例項的某一屬性的時候能夠正確的呼叫。

相關文章