ホームページ  >  記事  >  バックエンド開発  >  PHP 抽象クラスとインターフェイスの概念と違い

PHP 抽象クラスとインターフェイスの概念と違い

WBOY
WBOYオリジナル
2016-07-25 09:07:381216ブラウズ
  1. //1. いくつかのメソッドを定義し、サブクラスはこの抽象化のすべてのメソッドを完全に実装する必要があります

  2. //2 の意味。これは拡張中です
  3. //3。抽象クラスには通常、抽象メソッドがあり、メソッド内に中括弧はありません
  4. //4。抽象メソッドは特定の関数を実装する必要がなく、サブクラスによって完成されます
  5. //5。サブクラス内の抽象クラスのメソッドの場合、そのサブクラスの可視性は抽象メソッドの定義以上である必要があります
  6. //6。抽象クラスのメソッドはパラメーターを持つことも、空にすることもできます
  7. //7。抽象メソッドにパラメータがある場合、サブクラスの実装にも同じ数のパラメータが必要です

  8. ////////////////////// /////////インターフェイス クラス定義:

  9. インターフェイス Shop{
  10. public function buy($gid);
  11. public function sell($gid);
  12. abstract function view($gid);
  13. }
  14. //Ifインターフェイスを使用する場合は、インターフェイス クラスのすべてのパラメータを定義する必要があります。メソッドが欠落していてはなりません (抽象を除く)。
  15. //このように、他の人が大規模なプロジェクトで次のメソッドをどのように実行しても、このインターフェースのすべてのメソッドを実装する必要があります!

  16. //例: 上記の A メソッドを実装するインターフェース
  17. クラスの BaseShop は Shop{
  18. public function buy($gid){
  19. echo '次の ID で商品を購入しました:' '';
  20. }
  21. public function sell($gid){
  22. echo 'ID:' の商品を購入および販売しました。 '';
  23. }
  24. public function view($gid){
  25. echo '$gid の商品を閲覧しました。' . ;/p>
  26. //インターフェースの多重継承例:

  27. interfacestaff_i1{ //インターフェース1
  28. function setID();
  29. function getID();
  30. }<

    interface Staff_i2{ //インターフェイス 2

  31. function setName();
  32. function getName();
  33. }

  34. クラスのスタッフは、staff_i1,staff_i2{

  35. private $id ;
  36. private $ を実装しますname;
  37. function setID($id){
  38. $this->id = $id;
  39. }

  40. function getID(){

  41. return $this->id ;
  42. }< ;/p>
  43. function setName($name){

  44. $this->name = $name;
  45. }

  46. function getName(){

  47. return $this-> ;name;
  48. }

  49. function otherFunc(){ //これはインターフェースに存在しないメソッドです

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