ホームページ >バックエンド開発 >PHPチュートリアル >コード例の分析 PHP インターフェイスと抽象クラスの違いは何ですか
この記事は、PHP の Interface と Abstract Class の違いについての詳細な分析と紹介です。必要な方は参照してください。
インターフェイスと抽象クラスは非常に似ています。メソッドは同じです。定義されたロジックはなく、すべてサブクラスが必要とするか継承します。 2 つを区別するには、次の 1 つの文を覚えておいてください: インターフェースは仕様であり、クラスは実装です。 インターフェースの目的は、誰もが従う仕様を定義することです。
言い換えれば、インターフェースと抽象クラスは目的の点で明確に区別できます。言い訳があるのですが、なぜまだ抽象クラスが存在するのでしょうか?という疑問が残ります。
参加して、Animal という名前のクラスを定義します。このクラスには、Dog と Cattle という 2 つのサブセットがあり、どちらも run() メソッドと speech() メソッドという 2 つのメソッドがあります。
Dog と Cattle の「run」が同じであるため、run() メソッドのビジネス ロジックは同じであり、「speak」が異なるため、speak() メソッドのビジネス ロジックは異なると仮定します。さらに、これら 2 つのメソッドが存在する必要があることを規定する IAnimal インターフェイスがあります。これは、Animal クラスがこれら 2 つのメソッドを実装する必要があることを意味します。同様に、2 つのサブクラス Dog と Cattle にもこれら 2 つのメソッドが必要です。その場合、次のように定義できます。これ:
コードは次のとおりです:
<?php interface IAnimal{ public function run(); public function speak(); } class Animal implements IAnimal{ public function run(){ //在这里可以添加一些相同的run逻辑 return "same run<br />"; } public function speak(){ //这里可以添加一些相同的speak逻辑 return "same speak<br />"; } } class Dog extends Animal{ public function speak(){ //在这里可以添加一些Dog逻辑 return "Dog speak<br />"; } } class Cattle extends Animal{ public function speak(){ //在这里可以添加一些Cattle逻辑 return "Cattle speak<br />"; } } $oDog=new Dog(); echo($oDog->run()); echo($oDog->speak()); $oCattle=new Cattle(); echo($oCattle->run()); echo($oCattle->speak()); ?>
以上がコード例の分析 PHP インターフェイスと抽象クラスの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。