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