php抽象類別和介面

來源:互聯網
上載者:User
```介面使用介面,你可以指定某個類必須實現那些方法,但是不需要定義這些方法的具體內容,我們可以通過interface來定義一個介面,就像定義標準類一樣,但其中定義所有的方法都是空的,介面中定義的所有的方法都必須是public實現一個介面,可以使用implement操作符,類中必須實現介面中定義的所用的方法,如果實現多個介面,可以用逗號來分割多個介面的名稱注意實現多個介面時,介面中的方法不能有重名介面也可以繼承,通過使用extends操作符介面中可以定義常量,介面常量和類常量的使用完全相同,他們都是定值,不能被子類或子介面修改例子://聲明介面interface Itemplate{ public function setVariable($name,$var); public function getHtml($template);}//實現介面class Template implements Itemplate{ private $vars=array(); public function setVariable($name,$var){ $this->vars[$name]=$var; } public function getHtml($template){ foreach($this->vars as $names=>$value){ $template=str_replace('{'.$names.'}',$value,$template); } return $template; }}  例子2:interface a{ public function foo();}interface b{ public function bar();}//繼承介面interface c extends a,b{ public function baz();}//實現介面class d implements c{ public function foo(){ } public function bar(){ } public function baz(){ }} interface a{ const b="hello";}  抽象類別php5支援抽象類別和抽象方法。抽象類別不能直接被執行個體化,必須先繼承該抽象類別,然後再執行個體化子類,任何一個類,如果他裡面至少有一個方法是被聲明為抽象的,那這個類就必須被聲明為抽象的,如果類方法被聲明為抽象的,那麼其中就不能包括具體的功能實現繼承一個抽象類別的時候,子類必須實現抽象類別中的所有的抽象方法,另外,這些方法的可見度必須和抽象類別中一樣(或更輕鬆),如果抽象類別中的某個抽象方法被聲明為proteected,那麼子類中實現的方法應該聲明為pritected或者public 例子:abstract class AbstractClass{ //抽象方法 abstract protected function getValue(); abstract protected function prefieValue($p); //普通方法(非抽象方法) public function printOut(){ print $this->getValue(); }} class ConcreteClass1 extends AbstractClass{ protected function getValue(){ return "ConcreteClass1"; } public function prefieValue($p){ return "{$p}concreteclass1"; }} class ConcreteClass2 extends AbstractClass{ protected function getValue(){ return "ConcreteClass2"; } public function prefieValue($p){ return "{$p}concreteclass2"; }} $class1=new ConcreteClass1();$class1->printOut();echo $class1->prefieValue('FOO_');/*  列印結果:ConcreteClass1FOO_concreteclass12. 調用靜態方法的抽象類別仍然可行的 類常量不可以的abstract class Foo{ const a="hello"; static function bar() { echo "test\n"; }}Foo::a;//沒有輸出Foo::bar();//test```
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.