抽象類&抽象方法 (只能被繼承)(關鍵字 abstract)(繼承關鍵字extends) 抽象類&抽象方法 (只能被繼承)(關鍵字 abstract)(繼承關鍵字extends) 具有抽象方法的類為抽象類, 抽象方法即為沒有內容的空方法,要求子類進行完善內容, 抽象類不能實例化,只能繼承, 通過ex ...
介面類不用實例化,需要一一實現介面定義的所有方法。關鍵字interface implements
介面interface 是一個規定,給人繼承用的東西,有點像抽象類
在裡面定義的方法,卻不去實例化,而需要別的類去implements 它,而且必須一一實現介面定義的所有方法,
實際上介面類說白了,就是一個類的模板,一個類的規定,
舉個例子
interface Shop
{
public function buy($gid);
public function sell($gid);
public function view($gid);
}
我聲明一個shop介面類,定義了三個方法:買(buy),賣(sell),看(view),那麼繼承此類的所有子類都必須實現這3個方法少一個都不行,
如果子類沒有實現這些話,就無法運行。
實際上介面類說白了,就是一個類的模板,一個類的規定,
如果你屬於這類,你就必須遵循我的規定,少一個都不行,但是具體你怎麼去做,我不管,那是你的事,如:
class BaseShop implements Shop
{
public function buy($gid)
{
echo('你購買了ID為 :'.$gid.'的商品');
}
public function sell($gid)
{
echo('你賣了ID為 :'.$gid.'的商品');
}
public function view($gid)
{
echo('你查看了ID為 :'.$gid.'的商品');
}
}
————————————————————————————————————————————————————————————————————————————————————————————————————————
抽象類&抽象方法 (只能被繼承)(關鍵字 abstract)(繼承關鍵字extends)
具有抽象方法的類為抽象類, 抽象方法即為沒有內容的空方法,要求子類進行完善內容, 抽象類不能實例化,只能繼承, 通過extends來實現,抽象類中也可以定義普通方法 父類方法執行方式不確定,但子類還都有這個方法 例1:如交通工具類:定義抽象方法控制交通工具運行方式,這樣每個交通工具如飛機,汽車都要重寫父類方法。如果在父類工具類定義該方法(比如在地上走)沒有任何意義,因為每個交通工具都要重寫(飛機要重寫方法,船要重寫方法),所以針對你類方法的不確定性,我們需要抽象方法,實現多態。 例2:定義動物類,每個動物都有叫聲方法,但是錶面不同,所以要定義為抽象類,讓每種動物類去實現功能。 當父類為抽象類時,子類必須重寫父類的抽象方法 抽象類里不一定非要寫抽象方法,但有抽象方法的類必須定義為抽象類 抽象類必須繼承使用 抽象方法不能有主體即{} <?php abstract class AbstractClass { // 強制要求子類定義這些方法 abstract protected function getValue(); abstract protected function prefixValue($prefix); // 普通方法(非抽象方法) public function printOut() { print $this->getValue(); } }________________________________________________________________________________________