Re: [請益] class繼承問題

看板PHP作者 (太陽拳vs野球拳)時間12年前 (2013/07/12 20:06), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串8/9 (看更多)
※ 引述《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(); 恕刪... 我覺得這不是OO相性的問題,而是設計模式錯了 一直繼承並不是個好例子 你可以用骨架模式或裝飾者模式來進行 abstract class 人猿{ public 對像; public function 結婚($model); } class 阿公 extends 人猿{ public function gf(){ } } class 阿爸 extends 阿公{ public function father(){ } } class 死囡仔 extends 阿爸{ public function child(){ } public function 結婚($model){ $this->對像 = model; } } interface i瘦女人{ public function 生子(); } interface i有兇女{ public function 嘿嘿(); } class 女人甲 implements i瘦女人{ public function 生子(){ return 生一個; } } class 女人乙 implements i瘦女人, i有兇女{ public function 嘿嘿(){ return 傳教士; } public function 生子(){ return 生兩個; } } ============================================= 開工 各個不同代的人應該要再區別他們的偏好,在同樣行為下,但是有不同的目的 $cm30 = new 死囡仔; $marry1 = $cm30->結婚(new 女人乙); $marry1->對像->嘿嘿(); //嘿嘿 $marry1->對像->生子(); 這也是為什麼JAVA的書一直提到 "多用合成,少用繼承" 的原因... p.s 回原PO問題 你應該就是要有相同結婚的行為 但要的結果或目的是又可擴充選擇的 那麼就可以以"女人"interface來做同樣行為下不同的邏輯結構,演算 做出不同 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.34.4.90 ※ 編輯: dlikeayu 來自: 1.34.4.90 (07/12 20:24)

07/12 21:00, , 1F
abst"r"act,修一下。
07/12 21:00, 1F
OK! ※ 編輯: dlikeayu 來自: 1.34.4.90 (07/12 21:10)
文章代碼(AID): #1Ht_5Bri (PHP)
文章代碼(AID): #1Ht_5Bri (PHP)