作者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
1F:推 azurewings:推! 喵呜凹呜喵呜呜呜呜~ 07/12 13:24
2F:推 tails32100:最近写JAVA也是觉得JAVA好写....不过真的很烦就是 07/16 21:49