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