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