ホームページ  >  記事  >  バックエンド開発  >  コード例の分析 PHP インターフェイスと抽象クラスの違いは何ですか

コード例の分析 PHP インターフェイスと抽象クラスの違いは何ですか

伊谢尔伦
伊谢尔伦オリジナル
2017-07-03 09:31:281148ブラウズ

この記事は、PHP の InterfaceAbstract 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 サイトの他の関連記事を参照してください。

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