Re: [請益] 有沒有用物件導向寫的簡單討論區
推
10/20 14:15,
10/20 14:15
→
10/20 14:18,
10/20 14:18
OO 有三個特性:封裝(Encapsulation)、多型(Polymorphism)、繼承(Inheritance)。
在 PHP5 之後,因引介了 private, public 和 protected 等 modifier,
所以語言維護封裝特性的能力增強了不少;PHP4 以前的版本,則得靠訓練
有素的工程師自己維持。
繼承方面,感覺跟 Java 實作的方式類似,可以繼承單一類別、以及多重繼承介面。
然而建構子的使用上,個人覺得比起 C++,還是有些缺點... 不過或許這是我的習慣
問題吧。
然後提到多型。PHP 在這方面弱到一種程度,無法用 overloading 的方式設計物件的
行為(如果我說錯了,希望有人能分享一下如何辦到:P)。這對物件的設計造成一些
障礙,得繞些圈子才能達到類似的效果(maybe 加入一堆 switch 或 if..then XD)
x x x
記得以前 OO 的老師說過,受良好軟體工程訓練的人,即便是 C 也可以很用 OO 的
方式開發;而對 OO 沒概念的人,既使用 Java 或 C# 一類物件導向的語言,也可以
寫的一點都不像 OO。
其實語言未必要原生支援 OO 的機制才能以 OO 開發;但是如果有這些機制輔助,那
顯然能省下不少時間 coding 一堆判別式、或是處理 函式呼叫時的一狗票參數。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.199.121
推
10/20 14:53, , 1F
10/20 14:53, 1F
推
10/20 15:34, , 2F
10/20 15:34, 2F
→
10/20 15:43, , 3F
10/20 15:43, 3F
→
10/20 15:44, , 4F
10/20 15:44, 4F
我常把 overloading 和 overriding 這兩個字意搞錯..
剛剛發現又搞錯了 XD
class foo{
function getName($var_a) { echo "foo"; }
// 下面是 overloading, 多載/重載 同一函式
// and .. php 沒法這樣搞..囧
//function getName($var_a, $var_b) { echo "foofoo"; }
}
class bar extends foo
{
// 這是 overriding, 子類別 覆載/覆寫 父類別的方法
function getName($var_c) { echo "bar"; }
}
真是對不起.. 誤導了大家 m(_ _)m
※ 編輯: foxzgerald 來自: 140.119.199.121 (10/20 16:56)
推
10/20 16:56, , 5F
10/20 16:56, 5F
→
10/20 17:08, , 6F
10/20 17:08, 6F
推
10/20 17:18, , 7F
10/20 17:18, 7F
→
10/20 17:18, , 8F
10/20 17:18, 8F
→
10/20 17:19, , 9F
10/20 17:19, 9F
推
10/20 17:28, , 10F
10/20 17:28, 10F
※ 編輯: foxzgerald 來自: 140.119.199.121 (10/20 22:48)
推
10/20 22:51, , 11F
10/20 22:51, 11F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 5 篇):
PHP 近期熱門文章
PTT數位生活區 即時熱門文章