Re: [請益] class繼承問題
※ 引述《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
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章
4
18
6
15