Re: [請益] class繼承問題

看板PHP作者 (<><魚仔<>< 薰~)時間12年前 (2013/07/12 10:46), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/9 (看更多)
※ 引述《tkdmaf (皮皮快跑)》之銘言: : ※ 引述《htl74421 (<><魚仔<>< 薰~)》之銘言: : : 我在 child 的 test() 中呼叫 father 的 get_data(), 但 father 沒有,所以我想應該 : : 會跳錯誤出來,可是它的結果卻是再往上去找到 grandfather 的 get_data(),所以是採用 : : 無限上綱的方式? 往上一直找到有為止? : : 這個樣子的話那如果中間是繼承了好幾層然後又有人去覆寫,這樣不就會造成我想的 : : get_data()不見得一定就是我想的那個,可能中間有人做了其它修改,這樣不就會大亂了嗎? : 我們先弄清楚關係,我就用中文解釋了。 : 祖父→父親→孩子 : 父親繼承了祖父,所以父親本身就會有祖父「全部」的特性。 : 孩子再繼承了父親,孩子就會有父親和祖父「全部」的特性。 : 但繼承不代表方法要一致。 : 所以你可以改寫父親的動作。 : 如果你在父類別修正了遺傳過來的某個方法。 : 那麼子類別再使用父類別或是本身的方法時,就是直接帶用父類別修改過的方法。 : 這個做法叫做「覆載」。 : 事實上,你就算不寫$a->test(); : 而是寫$a->get_data(); : 也是會有結果的。 : 簡單來說,如果繼承體無法具備等同於被繼承體的完全特性的話。 : 那根本就不用設計「繼承」這個動作了。 : 你這還只是一直線的直系血親。 : 還沒扯到哥哥、弟弟、姊姊、妹妹。 : 這些兄弟姊妹才是做為繼承很重要的因素。 : 另外你還有伯伯、叔叔、阿姨、姑姑。 : 這還沒另外再扯到表兄弟姐妹。 : 很明顯的,繼承這件事是一門很大的血緣關係呢! : 當然你問我說能不能偷抱人家的孩子回來教育? : 這當然是可以的。 : 你就思考一下整個概念囉。 感謝回答 ^^ 目前我碰到的情況是原程式只下了一句 parent:get_data() ,然後我往上找了四代才找 到 get_data() 在哪裡, 原本我以為只是到上一代去找而已... 這樣我就想到這中間如果有人不曉得底下有人去找原來的 get_data() 而又創了一個 那到了最下面的人不就慘了? 所以說是不是要修正寫法改指定是哪一代的 get_data() 這樣比較保險? 謝謝 ^^" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.39.133.25
文章代碼(AID): #1HtsuYDq (PHP)
討論串 (同標題文章)
文章代碼(AID): #1HtsuYDq (PHP)