看板 PHP 關於我們 聯絡資訊
※ 引述《htl74421 (<><魚仔<>< 薰~)》之銘言: : 我目前的疑惑是這樣: : class grandfather { //祖父 : public function grandfather() : { : // : } : public function get_data() : { : echo 'hello'; : } : } : class father extends grandfather { //爸爸 : public function father() : { : // : } : } : class child extends father{ //小孩 : public function child() : { : // : } : public function test() : { : parent::get_data(); : } : } : $a = new child(); : $a->test(); : 我在 child 的 test() 中呼叫 father 的 get_data(), 但 father 沒有,所以我想應該 : 會跳錯誤出來,可是它的結果卻是再往上去找到 grandfather 的 get_data(),所以是採用 : 無限上綱的方式? 往上一直找到有為止? : 這個樣子的話那如果中間是繼承了好幾層然後又有人去覆寫,這樣不就會造成我想的 : get_data()不見得一定就是我想的那個,可能中間有人做了其它修改,這樣不就會大亂了嗎? 我們先弄清楚關係,我就用中文解釋了。 祖父→父親→孩子 父親繼承了祖父,所以父親本身就會有祖父「全部」的特性。 孩子再繼承了父親,孩子就會有父親和祖父「全部」的特性。 但繼承不代表方法要一致。 所以你可以改寫父親的動作。 如果你在父類別修正了遺傳過來的某個方法。 那麼子類別再使用父類別或是本身的方法時,就是直接帶用父類別修改過的方法。 這個做法叫做「覆載」。 事實上,你就算不寫$a->test(); 而是寫$a->get_data(); 也是會有結果的。 簡單來說,如果繼承體無法具備等同於被繼承體的完全特性的話。 那根本就不用設計「繼承」這個動作了。 你這還只是一直線的直系血親。 還沒扯到哥哥、弟弟、姊姊、妹妹。 這些兄弟姊妹才是做為繼承很重要的因素。 另外你還有伯伯、叔叔、阿姨、姑姑。 這還沒另外再扯到表兄弟姐妹。 很明顯的,繼承這件事是一門很大的血緣關係呢! 當然你問我說能不能偷抱人家的孩子回來教育? 這當然是可以的。 你就思考一下整個概念囉。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.105.158.53
tails32100:偷抱人家的孩子XDDDD 07/12 09:21
rocairforce:祖父吃麵麵,父親變成吃麵麵不加辣辣 07/12 14:28