ホームページ >バックエンド開発 >PHPチュートリアル >PHPの抽象クラスとインターフェイス

PHPの抽象クラスとインターフェイス

WBOY
WBOYオリジナル
2016-06-23 13:25:23973ブラウズ

```インターフェイス インターフェイスを使用すると、特定のクラスが実装する必要があるメソッドを指定できますが、これらのメソッドの特定の内容を定義する必要はありません。標準クラスを定義するのと同じように、インターフェイスを通じてインターフェイスを定義できます。 all メソッドはすべて空です。インターフェイスを実装するには、インターフェイスで定義されたすべてのメソッドをパブリックにする必要があります。複数のインターフェイスが実装されている場合、クラスはそれらを分離できます。複数のインターフェイスの名前は、extends 演算子を使用してインターフェイス内で同じ名前を持つことができないことに注意してください。定数とクラス定数はまったく同じです。値は両方とも定義されており、サブクラスやサブインターフェイスによって変更することはできません。 例: //インターフェイス インターフェイスを宣言します。 public function setVariable($name,$template); ;}//インターフェイス クラスを実装する Template は、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); } } 例2:interface a{ public function foo();}interface b{ public function bar();}//インターフェースを継承interface c extends a,b{ public function baz();}//インターフェースclass dを実装cを実装{ public function foo(){ } public function bar(){ } public function baz(){ }}interface a{ const b="hello";} 抽象クラス PHP5は抽象クラスと抽象メソッドをサポートしています。抽象クラスは直接インスタンス化できません。クラス内の少なくとも 1 つのメソッドが abstract として宣言されている場合は、最初に抽象クラスを継承してからサブクラスをインスタンス化する必要があります。抽象クラスを継承する場合、サブクラスは抽象クラスのすべての抽象メソッドを実装する必要があります。また、これらのメソッドの可視性は、抽象クラスの可視性と同じである必要があります。 )、抽象クラス内の抽象メソッドが protected として宣言されている場合、サブクラスに実装されたメソッドは private または public として宣言される必要があります。 例: abstract class AbstractClass{ //abstract method abstract protected function getValue( ); ($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. 静的メソッドの呼び出し 抽象クラスも引き続き実行可能ただし、クラス定数は抽象ではありません class Foo{ const a="hello"; static function bar() { echo "testn" }}Foo::a;//出力なし Foo::bar() ;//test`` `

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。