物件轉型的操作中,成員變數的變化過程

2021-06-27 23:40:16 字數 685 閱讀 9554

乙個子型別的物件轉型成父類,以及再次轉回子類的過程中,物件的成員變數是如何變化的?

首先,驗證**如下:

class a

class b extends a

class test

}
於是,成員變數傳遞的過程就很明顯了,a b = a ; 這條**,並不是改變了原本物件的x值,而是新增了乙個x值,換句話說,這條**就是給物件新開闢了一部分空間,專門放新加入進來的a類定義的成員變數,各存各的。

而考慮到後面的b c = (b)b ; 及其之後的執行結果

,這裡我暫且用這樣一種說法:

乙個物件不只能存它的宣告類所定義的成員變數,還可以儲存這個類所有超類定義的成員變數,後者會在物件轉型時生效,而這些成員變數互不影響。

eg.拿學生和人做個例子

人出生年齡0歲,學生上小學年齡6歲,乙個學生物件a,他的年齡變數初始化為6,並一年年學業,長到了9歲,這時把這個學生向上轉型成乙個普通的人,就有了新的年齡屬性,初始化為0,如果有必要,這個年齡可以再設成9,就算沒有必要,如果之後他又被轉型回學生,他的年齡也還是9。

換句話說,物件的屬性不一定都是真實有效的,尤其是轉型之後的新的成員變數,但就有的成員變數並沒有丟失,所以對實際執行影響不大。

物件導向繼承中成員變數的關係

在物件導向繼承問題中,子類和父類都會有其成員變數,那麼在訪問類中成員變數時,我們該如何進行理解呢?分為倆種情況 1 子類中成員變數和父類中成員變數的名稱不相同 理解方法 我們在訪問中,直接訪問其名稱即可,因為編譯器會根據你訪問的名稱進行匹配,匹配到相應的成員變數,如果沒有匹配到,則會自動報錯 2 子...

統計物件中某個成員變數的訪問次數

例項1 適用於非const物件 例項2 適用於const物件和非const物件 mutable是為了突破const函式的限制而設計的 mutable成員變數將永遠處於可改變的狀態 mutable在實際的專案開發中被嚴禁濫用 通過mutable來進行修飾,const物件將名存實亡。mutable的深入...

物件的轉型

1.向上轉型 什麼是向上轉型?向上轉型 將子類的物件賦值給父類的引用 乙個引用能夠呼叫哪些成員 變數和函式 取決於這個引用的型別是怎麼定義的 乙個引用呼叫的是哪乙個方法,取決於這個引用所指向的物件 向上轉型只要兩個類是繼承關係就一定會成功 2.向下轉型 什麼是向下轉型?向下轉型 將父類的物件賦值給子...