作者PsMonkey (痞子軍團團長)
看板PHP
標題Re: [請益] class繼承問題
時間Fri Jul 12 12:13:14 2013
我先承認我是來宣揚 Java 的 [逃]
等等,我還沒有大膽到來這貶 PHP 捧 JSP
應該說,實務上你要用 PHP 還是 JSP 我不敢有意見
但是如果是在學習階段,嗯... 你為什麼要用 PHP 來學 OO 觀念呢?
或著說,任何 dynamic language / script language 都不太適合學 OO 觀念?
這樣講可能還是太冒險(謎之聲:但是你講了! [指])
用最中立的講法,我建議你到 Java 學 OO
然後瞭解 OO 之後再回到 PHP 的世界中寫 OO
其實兩者寫法並沒有差那麼多(其實我常常沒辦法立刻判斷是 PHP 還是 Java)
※ 引述《htl74421 (<><魚仔<>< 薰~)》之銘言:
: 感謝回答 ^^
: 目前我碰到的情況是原程式只下了一句 parent:get_data() ,然後我往上找了四代才找
: 到 get_data() 在哪裡, 原本我以為只是到上一代去找而已...
所以前面 t 大的文章其實講的很傳神
其實這是遺傳
其實四代還算好的... 有些 OO 摩天大樓...... [抖]
光 interface 就給你掛了五個十個 [淚目]
: 這樣我就想到這中間如果有人不曉得底下有人去找原來的 get_data() 而又創了一個
: 那到了最下面的人不就慘了?
PHP 的世界我不太確定
但是在 Java 當中,如果你 override 祖宗十八代的 method
那你得在 method 掛上 @override 這個 annotation
不然像 Eclipse 這種 IDE 就會給你 warning
在 @override 出來之前
你在 JavaDoc 也可以看到祖宗十八代有提供哪些 method
IDE 也會告訴你到底是誰提供這個 method
PHP... 我不知道 NetBeans 可以 support 到什麼程度
不過大抵上應該沒辦法這麼全面
反過來想,要蓋 OO 而沒有 IDE / JavaDoc 這類工具的輔助
這樣寫起來真的會快樂嗎? [遠目]
當然從小寫 Java 長大的我是很難想像啦 [死]
: 所以說是不是要修正寫法改指定是哪一代的 get_data() 這樣比較保險?
: 謝謝 ^^"
其實,這樣繼承起來就沒意義了
用例子來說明可能比較實在
請不要問我下面這個 case 有什麼實質意義
這只是展示一種可能性
是說我在 GWT 的 code 當中的確有看過類似的 pattern
想一下這個族譜(我用 Java 寫,其實意思一樣)
interface 貓科 {
public void 吃(Object food);
public String 叫聲();
}
abstract class 大型貓科 {
public final void 吃(Object food) { this.大口咬(food); }
public String 叫聲() { return this.大叫(); }
public void 大口咬(Object food) { //狼吞虎嚥 }
public abstract String 大叫();
}
class 獅子 {
public String 大叫() { return 獅子叫聲; }
}
class 老虎 {
public String 大叫() { return 老虎叫聲; }
}
abstract class 小型貓科 {
public void 吃(Object food) { //跳過 }
}
class 貓 {
public String 叫聲() { return "喵~"; }
}
class 發春貓 extends 貓 {
public String 叫聲() { return "喵嗚凹嗚喵嗚嗚嗚嗚~"; }
}
class 無嘴卡通貓 extends 貓 {
public final void 吃(Object food) {
throw new Exception("沒嘴怎麼吃");
}
public final String 叫聲() {
return ""; //沒嘴是要怎麼叫
}
}
class HelloKitty extends 無嘴卡通貓 { }
今天這個 HelloKitty 真的可以去指定說他的叫聲應該 follow 貓的叫聲嗎?
還有老虎跟獅子的「吃()」,子孫們一定只能大口咬
那又該怎麼辦?
=====
我也承認我是來混 P 幣的 [逃]
--
錢鍾書:
說出來的話
http://www.psmonkey.org
比不上不說出來的話
Java 版 cookcomic 版
只影射著說不出來的話
and more......
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.164.172.83
推 azurewings:推! 喵嗚凹嗚喵嗚嗚嗚嗚~ 07/12 13:24
推 tails32100:最近寫JAVA也是覺得JAVA好寫....不過真的很煩就是 07/16 21:49