1. 程式人生 > >學習Java之通過物件識別符號可操作物件的哪些屬性和方法的點滴體會

學習Java之通過物件識別符號可操作物件的哪些屬性和方法的點滴體會

再說這個主題的時候,我們先大致看一下我畫的有點不可觀賞的類檔案的關係圖。通過上圖,我們知道一類物件的物件描述檔案類檔案之間是有相互關聯關係的。

所以,對於一個具體物件而言,此物件的屬性和方法就有可能被在不同的物件描述檔案中所描述。例如:當我們使用物件描述檔案要描述這個物件的時候,對於花的子類,不同的子類就會有不同的特徵。如——有的花有有刺,有的花沒有刺,有的花夏天開,有的花冬天開;有的花五顏六色,有的花一種顏色等等……因此,我們不可能把世界上所有花的特徵都寫在一個描述檔案裡面。那麼這個時候,我們把各型別的花分別寫在不同的物件描述檔案中是比較合理的方法。這個時候,由於同類物件間的細微差別,如同類花中的個別花突然出現了新的特徵,這個時候,我們就要為它新建一個描述檔案,但是它的一些特徵與同類花還是一樣的,那此時這個花就即有同類花的相關特徵,又有自己的獨有特徵。面對這種情況,當我們建立一個以花命名的物件時,我們所操作的物件的屬性和方法是哪些呢,又或是在哪些物件描述檔案中定義的?這個就是我這個不成篇幅的小文章所要說明的一個小問題。

在Java程式碼中,我們知道,我們想要使用物件的屬性和方法時,我們便使用引用識別符號來標識我們所有使用的具體物件,這個時候,物件引用識別符號和物件之間呈現一對一的對應關係,即一個引用識別符號在同一時間內只表示唯一的一個物件

因為Java語言的多型性和物件識別符號宣告的型別存在轉型(從頂層Object根類到建立物件時所用的類之間的所有的型別,都是此物件可以轉換的型別,即子類建立的物件一定也是父類物件,但父類建立的物件一定不是子類物件),所以在Java中,就存在有可能用子類建立父類物件的情況,因為父類物件中包含所有的子類物件,父類與子類是包含關係。

此時,當我們用一個父型別識別符號來標識一個子型別描述檔案建立的物件時,我們看似是建立了一個父型別物件,實質是建立了一個子型別的物件。

①、那麼我們通過引用識別符號來操作這個物件的屬性時,我們都能使用哪些屬性呢?那就是從我們宣告識別符號所用的物件描述檔案開始一直到物件的Object根類檔案這條聯絡線上的所有檔案中的屬性描述集合中的屬性都可以使用,當這些物件描述檔案中有重定義屬性時,我們只能使用子類描述檔案中最後一次定義的這一屬性,因為此時的屬性更加接近我們所建立的物件的屬性,此時的屬性更加精確與貼近實際;

②、通過此引用識別符號,我們可以使用物件的哪些方法呢?這個時候,我們就要格外小心了,因為我們所使用的方法和此方法的具體實現有可能是相分離的。我們可使用的方法名從引用識別符號所宣告的型別一直向上到Object根型別中所定義的

方法的集合中的方法都可以使用,當有父類方法在子類中被覆蓋時,我們所有的方法是覆蓋了父類方法的子類中的相同結構的方法,即最近一次被現實的方法。為什麼說我們所使用的方法和此方法的具體實現有可能是相分離的呢?那是因為,我們可使用的方法在建立物件的類描述檔案中重新定義的話,我們所使用的方法實現就是建立物件使用的類描述檔案中的實現,而不是宣告物件識別符號的類描述檔案中的方法實現,就是說,這一方法的實現不宣告中的方法的實現還要新。