子類繼承父類的變數和父類原有變數的關係

2021-07-04 13:55:02 字數 1314 閱讀 3783

做專案的時候錯認為在子類中修改從父類繼續下來的變數值,會影響到其他繼承該變數的子類,實際上不是的,每個繼承了這個變數的子類,相當於拷貝了乙份變數,對變數的修改影響也僅限於自身,不會影響到父類的變數值,更不會影響到其他子類對應的變數值。特意寫的demo驗證下:

//父類

public

abstract

class abstractparent

//子類1

public

class

child1

extends

abstractparent

}

//子類2

public

class

child2

extends

abstractparent

}

//主類

public

class mytest

}

執行輸出的結果為: common:1,由此可見類child1修改的是從父類common變數的拷貝,不會影響父類common的值

進一步做驗證,在子類中宣告乙個和父類相同的變數並修改其值,修改後的demo為:

public

class

child1

extends

abstractparent

public

void

printparentcommon()

}

public

class

child2

extends

abstractparent

public

void

printparentcommon()

}

public

class mytest

}

輸出結果:

common:6

parent common:1

common:1

parent common:1

common:10

parent common:10

由此可見,如果在子類中宣告了和父類名稱一樣的變數,則子類中對自己宣告的變數的修改,不影響父類中改變量的值,變數繼承的父類和子類記憶體模型如下圖:

子類繼承父類的成員變數

1 子類可以繼承父類的成員變數 只能繼承public 和protected,不能private 2 子類拿到的父類的成員變數值是初始化的值。3 如下面classb繼承classa,只能拿到初始化的a的值。int classa a 0 int main class classa include std...

py 子類繼承父類

class 派生類名 基類名 usr bin python coding utf 8 class parent 定義父類 parentattr 100def init self print 呼叫父類建構函式 defparentmethod self print 呼叫父類方法 defsetattr s...

php父類繼承子類 PHP父類方法繼承問題

有幾個類的很相似,只是其方法對資料處理的邏輯和最後資料輸出的結果有些差別,可以通過這樣的思路實現嗎?1.思路一,通過修改抽象函式邏輯實現返回值不同abstract class parentsclass child extends parentsclass child extends parents ...