介面
介面就是把不同類的共同行為經行了定義,然後在不同的類裡面實現不同功能。當有很多人一起開發乙個專案時,可能都會去呼叫別人寫的一些類,那你就會問,我怎麼知道他的某個功能的實現方法是怎麼命名的呢,這個時候php介面類inte***ce就起到作用了,當我們定義了乙個介面類時,它裡面的方式是下面的子類必須實現的,比如 :
<?php
inte***ce shop
class baseshop implements shop
public function sell($gid)
public function view($gid)
} ?>
多型
因為介面的實現方法可以有很多,所以對於介面裡面頂一頂方法的具體實現是多種多樣,這種特性稱為多型。多型是指在物件導向中能夠根據使用類的上下文來重新定義或改變類的性質和行為。
php不支援過載實現多型,但是php可以變向的實現多型效果。
案例一:
<?
inte***ce user
class normaluser implements user
public function setname($_name)
}class useradmin
}$normaluser = new normaluser();
useradmin::changeusername($normaluser,"tom");//這裡傳入的是 normaluser的例項.
echo $normaluser->getname();
?>
案例二:
<?php
// 通過可變引數來達到改變引數數量過載的目的
// 不是必須傳入的引數,必須在函式定義時賦初始值
function open_database($db, $cache_size_or_values=null, $cache_size=null)
return is_resource($r);
}?>
抽象類
抽象類是介於介面與類的定義之間
php5支援抽象類和抽象方法。抽象類不能直接被例項化,你必須先繼承該抽象類,然後再例項化子類。抽象類中 至少要包含乙個抽象方法。如果類方法被宣告為抽象的,那麼其中就不能包括具體的功能實現。
繼承乙個抽象類的時候,子類必須實現抽象類中的所有抽象方法;另外,這些方法的可見性 必須和抽象類中一樣(或者更為寬鬆)。如果抽象類中某個抽象方法被宣告為protected,那麼子類中實現的方法就應該宣告為protected或者public,而不 能定義為private。
<?php
abstract class abstractclass
}class concreteclass1 extends abstractclass
public function prefixvalue($prefix) concreteclass1";
}}class concreteclass2 extends abstractclass
public function prefixvalue($prefix) concreteclass2";
}}$class1 = new concreteclass1;
$class1->printout();
echo $class1->prefixvalue('foo_') ." ";
$class2 = new concreteclass2;
$class2->printout();
echo $class2->prefixvalue('foo_') ." ";
?>
PHP物件導向學習二
類的繼承和應用 繼承關鍵字 extends class1 extends class2 extends class3 依次被繼承,class3擁有class1 class2所以功能和屬性,避免方法和屬性重名 class pc1 class pc2 extends pc1 class pc2擁有cla...
PHP物件導向程式設計
類中常用關鍵字 1 關鍵字 final 用來定義類和方法的乙個重要關鍵字,當定義類的時候該類將不能被繼承,當用來定義方法的時候該方法將不能被過載 2 關鍵字 self 用來用類訪問當前類中的內容的關鍵字,類似與 this關鍵字,但 this是需要 類例項化以後才可以使用,self 可以直接訪問當前類...
php物件導向程式設計
物件導向程式設計的概念 不同的作者之間說法可能不一樣,但是乙個oop語言必須有以下幾方面 抽象資料型別和資訊封裝 繼承 多型 在php中是通過類來完成封裝的 class something function getx 當然你可以按自已的喜好進行定義,但最好保持一種標準,這樣會更有效。資料成員在類中使...