PHP物件導向編程學習之二
介面
介面就是把不同類的共同行為經行了定義,然後在不同的類裡面實現不同功能。當有很多人一起開發一個項目時,可能都會去調用別人寫的一些類,那你就會問,我怎麼知道他的某個功能的實現方法是怎麼命名的呢,這個時候PHP介面類interface就起到作用了,當我們定義了一個介面類時,它裡面的方式是下面的子類必須實現的,比如 :
多態
因為介面的實現方法可以有很多,所以對於介面裡面頂一頂方法的具體實現是多種多樣,這種特性稱為多態。多態是指在物件導向中能夠根據使用類的上下文來重新定義或改變類的性質和行為。
PHP不支援重載實現多態,但是PHP可以變向的實現多態效果。
案例一:
name;}public function setName($_name){$this->name = $_name;}}class UserAdmin{ //操作.public static function ChangeUserName(User $_user,$_userName){$_user->setName($_userName);}}$normalUser = new NormalUser();UserAdmin::ChangeUserName($normalUser,"Tom");//這裡傳入的是 NormalUser的執行個體.echo $normalUser->getName();?>案例二:
抽象類別
抽象類別是介於介面與類的定義之間
PHP5支援抽象類別和抽象方法。抽象類別不能直接被執行個體化,你必須先繼承該抽象類別,然後再執行個體化子類。抽象類別中 至少要包含一個抽象方法。如果類方法被聲明為抽象的,那麼其中就不能包括具體的功能實現。
繼承一個抽象類別的時候,子類必須實現抽象類別中的所有抽象方法;另外,這些方法的可見度 必須和抽象類別中一樣(或者更為寬鬆)。如果抽象類別中某個抽象方法被聲明為protected,那麼子類中實現的方法就應該聲明為protected或者public,而不 能定義為private。
getValue() . " "; }}class ConcreteClass1 extends AbstractClass{ protected function getValue() { return "ConcreteClass1"; } public function prefixValue($prefix) { return "{$prefix}ConcreteClass1"; }}class ConcreteClass2 extends AbstractClass{ public function getValue() { return "ConcreteClass2"; } public function prefixValue($prefix) { return "{$prefix}ConcreteClass2"; }}$class1 = new ConcreteClass1;$class1->printOut();echo $class1->prefixValue('FOO_') ." ";$class2 = new ConcreteClass2;$class2->printOut();echo $class2->prefixValue('FOO_') ." ";?>
http://www.bkjia.com/PHPjc/953323.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/953323.htmlTechArticlePHP物件導向編程學習之二 介面 介面就是把不同類的共同行為經行了定義,然後在不同的類裡面實現不同功能。當有很多人一起開發一個項...