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

PHP のインターフェースと実装の詳細な紹介

零下一度
零下一度オリジナル
2017-06-17 10:50:001426ブラウズ

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。複数の Reference をカンマで区切って実装します

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


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

2. 形式: 抽象クラス アプリケーション インターフェイスの例


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

3.

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

最初に継承してからインターフェイス、単一継承の複数のインターフェイス。

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

interface demo3 extends demo { 
... 
}

サンプルコードは次のとおりです:


<?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(); 
?>

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

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

<?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); //可以是更多其他用户类型 
?>

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

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

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

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

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

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

class 子类 extends 父类 implemtns 接口1, 接口2, ... 
{ 
 ...... 
}

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

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

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

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


りー

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

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