PHPOOP-インターフェース
PHP-インターフェースとは何ですか?
インターフェイスを使用すると、クラスが実装するメソッドを指定できます。
インターフェイスを使用すると、さまざまな異なるクラスを同じように簡単に使用できます。1つ以上のクラスが同じインターフェースを使用する場合、それは「ポリモーフィズム」と呼ばれます。
インターフェイスは次のinterface
キーワードで宣言されます。
構文
<?php
interface InterfaceName {
public function someMethod1();
public function someMethod2($name, $color);
public function
someMethod3() : string;
}
?>
PHP-インターフェースと抽象クラス
インターフェイスは抽象クラスに似ています。インターフェイスと抽象クラスの違いは次のとおりです。
- インターフェイスはプロパティを持つことができませんが、抽象クラスはプロパティを持つことができます
- すべてのインターフェイスメソッドはパブリックである必要がありますが、抽象クラスメソッドはパブリックまたは保護されています
- インターフェイスのすべてのメソッドは抽象であるため、コードで実装することはできず、abstractキーワードは必要ありません。
- クラスは、同時に別のクラスから継承しながらインターフェイスを実装できます
PHP-インターフェースの使用
インターフェイスを実装するには、クラスで implements
キーワードを使用する必要があります。
インターフェイスを実装するクラスは、インターフェイスのすべてのメソッドを実装する必要があります。
例
<?php
interface Animal {
public function makeSound();
}
class Cat implements Animal {
public function makeSound() {
echo "Meow";
}
}
$animal = new Cat();
$animal->makeSound();
?>
上記の例から、動物のグループを管理するソフトウェアを作成するとします。すべての動物が実行できるアクションがありますが、各動物は独自の方法でそれを実行します。
インターフェイスを使用すると、各動物の動作が異なっていても、すべての動物で機能するコードを記述できます。
例
<?php
// Interface definition
interface Animal {
public
function makeSound();
}
// Class definitions
class Cat
implements Animal {
public function makeSound() {
echo " Meow ";
}
}
class Dog implements Animal {
public function makeSound()
{
echo " Bark ";
}
}
class Mouse implements Animal {
public function makeSound() {
echo " Squeak ";
}
}
// Create a list
of animals
$cat = new Cat();
$dog = new Dog();
$mouse = new
Mouse();
$animals = array($cat, $dog, $mouse);
// Tell the animals
to make a sound
foreach($animals as $animal) {
$animal->makeSound();
}
?>
例の説明
Cat、Dog、Mouseはすべて、Animalインターフェイスを実装するクラスです。つまり、これらはすべて、makeSound()
メソッドを使用してサウンドを作成できます。このため、それぞれの動物の種類がわからなくても、すべての動物をループして音を出すように指示することができます。
インターフェイスはクラスにメソッドの実装方法を指示しないため、各動物は独自の方法で音を出すことができます。