php中類的繼承在內(nèi)存中的結(jié)構(gòu)與不繼承的結(jié)構(gòu)問題
第一個問題:
1.假設(shè)有一個父類只有一個 name 屬性,使用 public 關(guān)鍵字修飾;又寫了個一個空的子類繼承自這個父類(不要說繼承了就不是空的了)。實例化這個子類。
class?Father?{ ????public?$name?=?'name'; } class?Child1?extends?Father?{ }
2.有一個類只有一個 name 屬性使用 public 修飾。實例化一個這個類。
class?Child2?{ ????public?$name?=?'name'; }
上面兩種情況,不從外在形式上區(qū)分不同,在內(nèi)存中的結(jié)構(gòu)是相同的嗎(僅從繼承來的數(shù)據(jù)來看比如 $name)?如果不同,能否用通俗的語言解釋下?
我試過繼承靜態(tài)屬性時,以子類身份修改靜態(tài)數(shù)據(jù)后,父子的這部分?jǐn)?shù)據(jù)都會發(fā)生改變,那么關(guān)于靜態(tài)屬性方法是存儲一份還是兩份(有關(guān)聯(lián)?)
第二個問題:
如果上面的結(jié)果是相同,那么是不是可以理解為繼承就是將父類的屬性方法拿來(public 的和 protected 的),添加到子類中,子類中繼承來的屬性方法相當(dāng)于父類中的屬性方法復(fù)制了一份,其實沒有一種必然的聯(lián)系,就像 =& 和 = 這兩種賦值方式的感覺,它是屬于 = 這種方式(不考慮復(fù)寫和靜態(tài)這些情況,我有點亂說不清,就是只考慮子類沒有直接寫出的而在父類中寫出的那些屬性方法,如果你清楚這個可以幫我解答下)。
雖然這個問題在實際開發(fā)過程中可能沒什么用,但就是想知道,希望誰能幫我解答一下。
2016-03-22
如果不是實例化應(yīng)該是一樣的
2016-03-22
感覺應(yīng)該不一樣