1. 程式人生 > >JAVA-初步認識-第八章-繼承-子父類中成員變量的特點

JAVA-初步認識-第八章-繼承-子父類中成員變量的特點

不能 int 不改變 blog 帶來 獲得 中繼 子類 變量

一.

談論完繼承之後,我們來看一下,繼承這個知識點在代碼中的體現。之前書寫代碼的時候,類和類之間並無關系。現在有了繼承之後,類與類之間有了父子關系,我們看一下程序代碼中是如何表現的。

子父類出現後,到底給我們的代碼帶來了哪些特點呢?
技術分享

(由上面的截圖,我想到函數的分類,有哪幾種?不同類別之間的區別是什麽?)

技術分享

技術分享

先從成員變量入手,介紹程序中繼承關系。從截圖中的例子可以看出,是先有了繼承關系,後面才有的相同代碼省略(提高了復用性)。

因為繼承,直接拿過來用。

我們討論成員變量,當然著重講解特殊性。看下面的截圖,子父類中有相同的名稱的變量,在調用變量時,我們就不知道到底調用的是誰。

技術分享

技術分享

DOS的結果顯示兩個都是5,這裏插一句,子要是有,就不找父。包括之前談論的,局部有,就不找成員。這是從表面現象分析出來的一個道理。從內存空間而言,就是自己本空間有,就不去外面去尋找。

這裏產生一個問題,我們就是想要操作父類中的num=4,該怎麽做?
既然子已經繼承父類,那麽子中就有這個num=4。(這裏是想要不改變名稱,而獲得這樣的效果麽?)

有一種想法,是子類中的num=5覆蓋了父類中的num=4。註意:子類中,int num=5; num=9; 才是同一變量的覆蓋。但是子類中num和父類中num完全是兩個變量,它們都有自己的所屬。

技術分享

那麽到底如何操作父類中的num,這時候可以使用一個關鍵字,

技術分享

(super不代表父類對象)

相似不是相同,用法想像,代表不一樣。

這時有父類和子類,寫上this代表的是本類,如果不想代表本類了,就用super代表父類。編譯運行,DOS顯示沒有錯。

技術分享

技術分享

為什麽父類不代表父類對象,而是代表父類空間?在代碼中,只有一個子類對象,並沒有父類對象。所以它不能代表父類對象,只能代表父類加載進來的所屬空間。子類為什麽能夠獲取父類中的內容呢?那是因為子類持有super引用。

在沒有學習子父類之前,弄一個對象去調用一個方法,這方法一進棧,這裏面就有了一個叫做this,用this來綁定調用方法的對象。而有了子父類以後,子類憑什麽要管父類叫爹,那是因為寫了extends的關鍵字。到時候,沒有的情況下,再一次到我們的父類中查找,怎麽找這個父類。我們在繼承的時候,就有了super,super就指向extends的父類。

當extends時,子類都持有super,這super就立刻指向這個父。用super就可以訪問父類中的內容了。

JAVA-初步認識-第八章-繼承-子父類中成員變量的特點