ホームページ >バックエンド開発 >PHPチュートリアル >PHPのキーワードインターフェースと実装の詳細な説明

PHPのキーワードインターフェースと実装の詳細な説明

陈政宽~
陈政宽~オリジナル
2017-06-28 13:20:571335ブラウズ

PHP クラスは単一継承です。つまり、クラスが複数のクラスの機能を必要とする場合、PHP はクラス インターフェイス テクノロジを導入します。以下の記事では、主に PHP のインターフェースと実装に関する関連情報を紹介します。必要な方は一緒に参照してください。

PHPインターフェース

PHPクラスは単一継承です。つまり、クラスが複数のクラスの機能を必要とする場合、PHPはクラスインターフェーステクノロジーを導入します。 。

抽象クラス内のすべてのメソッドが抽象メソッドであり、変数が宣言されておらず、インターフェース内のすべてのメンバーがパブリック権限を持っている場合、この特別な抽象クラスはインターフェースと呼ばれます。

インターフェースはキーワードinterfaceを使用して定義され、キーワードimplementsはインターフェース内のメソッドを実装するために使用されます。これは完全に実装する必要があります。

クラスへのインターフェースの適用

1. キーワード: インターフェース

2. キーワード: 実装

1. インターフェースの導入と作成

インターフェース: メンバー 属性 すべては特別な抽象です抽象クラスまたは定数クラス。

ルール:

1. クラス内のすべてのメソッドは抽象メソッドです。

2. 抽象メソッドの場合は抽象を追加する必要はありません。

3. インターフェースの抽象メソッド属性は public です。

4. メンバー属性は定数である必要があります。

フォーマットコードは次のとおりです:

interface demo { 
const NAME = "常量对象属性"; 
function fun1(); 
function fun2(); //抽象方法。 
}

2. インターフェースのアプリケーションと仕様

インターフェース参照はクラス継承キーワードextendsとは異なりますが、継承はキーワードimplementsを使用して行うことができます。複数の参照をカンマで区切ります

1. 形式: 通常のクラス参照インターフェイス

class MyPc implements demo , demo2 , demo3 { 
... 
}

2. 形式: 親クラスの参照インターフェイスを継承して共存します

abstract class MyPc implements demo , demo2 , demo3 { 
... 
}

、単一継承の複数のインターフェイス。

4. 形式: インターフェイスとインターフェイスの継承

class MyPc extends Root implements demo , demo2 , demo3 { 
... 
}

コード例は次のとおりです:

interface demo3 extends demo { 
... 
}

たとえば、インターフェイスはキーワードinterfaceを使用して定義され、キーワードimplementsはインターフェイス内のメソッドを実装するために使用されます。完全に実装されなければなりません。

コード例は次のとおりです:

<?php 
interface demo { 
 const NAME = "名称"; 
 function fun1(); 
 function fun2(); 
} 
interface demo2 { 
 function fun3(); 
 function fun4(); 
} 
interface demo3 { 
 const TEST = "Test"; 
 function fun5(); 
} 
class MyPc implements demo, demo2 { 
 function fun1() { 
 echo "++++++++++<br />"; 
 } 
 function fun2() { 
 echo "----------<br />"; 
 } 
 function fun3() { 
 echo "1111111111<br />"; 
 } 
 function fun4() { 
 echo "2222222222<br />"; 
 } 
} 
class MyPs extends MyPc implements demo3 { 
 function fun5() { 
 echo "继承类后引用接口"; 
 } 
} 
$p = new MyPs; 
$p->fun1(); 
$p->fun2(); 
$p->fun3(); 
$p->fun4(); 
$p->fun5(); 
?>

例を実行すると、出力は次のようになります:

VIP ユーザー製品の価格: 80 元

この例は、PHP インターフェイスの簡単なアプリケーションを示します。この例では、ユーザー インターフェイスはユーザーの割引を実装し、VipUser クラスは特定の割引係数を実装します。最後に、製品カテゴリ「Goods」は、ユーザー インターフェイスに基づいてさまざまなユーザーの見積もりを実装します。

この例は、PHP インターフェースの使用法を示すことに限定されており、その科学的性質には関与しません。

複数のインターフェースを実装する

PHP はクラスを継承するときに同時に複数のインターフェースを実装することもできます:

<?php 
//定义接口 
interface User{ 
 function getDiscount(); 
 function getUserType(); 
} 
//VIP用户 接口实现 
class VipUser implements User{ 
 // VIP 用户折扣系数 
 private $discount = 0.8; 
 function getDiscount() { 
  return $this->discount; 
 } 
 function getUserType() { 
  return "VIP用户"; 
 } 
} 
class Goods{ 
 var $price = 100; 
 var $vc; 
 //定义 User 接口类型参数,这时并不知道是什么用户 
 function run(User $vc){ 
  $this->vc = $vc; 
  $discount = $this->vc->getDiscount(); 
 $usertype = $this->vc->getUserType(); 
  echo $usertype."商品价格:".$this->price*$discount; 
 } 
} 
$display = new Goods(); 
$display ->run(new VipUser); //可以是更多其他用户类型 
?>


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

インターフェースは特別な抽象クラスです。モデルの仕様とみなすこともできます。インターフェイスと抽象クラスの一般的な違いは次のとおりです。

1. サブクラスがインターフェイスを実装する場合、サブクラスはインターフェイス内のすべてのメソッドを (必要かどうかに関係なく) 実装する必要があります。抽象クラスを継承する場合は、必要なのはインターフェイスのみです。必要なメソッドを実装します。

2. インターフェイスで定義されたメソッド名が変更された場合、このインターフェイスを実装するすべてのサブクラスはメソッド名を同期的に更新する必要があり、抽象クラスのメソッド名が変更された場合、そのサブクラスの対応するメソッド名は変更されません。影響を受けます。(古いメソッドの実装と比較して) 新しいメソッドになるだけです。

3. 抽象クラスは 1 つだけ継承できます。サブクラスが複数の親クラスから継承する必要がある関数を実装する必要がある場合は、インターフェイスを使用する必要があります。


りー


概要

以上がPHPのキーワードインターフェースと実装の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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