ホームページ > バックエンド開発 > PHPチュートリアル > PHPオブジェクト指向開発などにおけるインターフェース(インターフェース、実装)の応用_PHPチュートリアル

PHPオブジェクト指向開発などにおけるインターフェース(インターフェース、実装)の応用_PHPチュートリアル

WBOY
リリース: 2016-07-13 10:50:16
オリジナル
1081 人が閲覧しました

PHP クラスのインターフェイスのアプリケーション キーワードは、インターフェイスと実装です。インターフェイスは、そのメンバー属性がすべて抽象または定数である特別な抽象クラスです。以下にいくつかの例を見てみましょう。

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

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

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

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

ルール:

1. クラス内のすべてのメソッドは抽象です。
2. 抽象メソッドに抽象メソッドを追加する必要はありません。
3. インターフェースの抽象メソッド属性は public です。
4. メンバー属性は定数である必要があります。

形式:

コードは次のとおりです コードをコピー

インターフェースのデモ {
const NAME = "定数オブジェクトのプロパティ";

関数 fun1();
function fun2(); //抽象メソッド。
}


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

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

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

クラス MyPc は、demo、demo2、demo3 を実装します {
...
}

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

抽象クラス MyPc は、demo、demo2、demo3 を実装します {
...
}

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

クラス MyPc は、Root を拡張して、demo、demo2、demo3 を実装します {
...
}

最初にインターフェイスを継承し、次にインターフェイスを継承し、単一継承の複数のインターフェイスを継承します。

4. フォーマット: インターフェースとインターフェースの継承

インターフェースdemo3はデモを拡張します{
...
}

例:

コードは次のとおりです コードをコピー

インターフェイスのデモ {
const NAME = "名前";
関数 fun1();
関数 fun2();
}

インターフェースデモ2 {
関数 fun3();
関数 fun4();
}

インターフェースデモ3 {
const TEST = "テスト";
関数 fun5();
}

クラス MyPc はデモ、demo2 を実装します {
関数 fun1() {
echo "++++++++++
";
}
関数 fun2() {
エコー "----------
";
}
関数 fun3() {
エコー "1111111111
";
}
関数 fun4() {
エコー "2222222222
";
}
}

クラス MyPs は MyPc を拡張し、demo3 を実装します {
関数 fun5() {
echo "クラスを継承してインターフェイスを参照します";
}
}
$p = 新しい MyP;
$p->fun1();
$p->fun2();
$p->fun3();
$p->fun4();
$p->fun5();
?>

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

例:

コードは次のとおりです コードをコピー

//インターフェースを定義します
インターフェース ユーザー{
関数 getDiscount();
関数 getUserType();
}
//VIP ユーザー インターフェイスの実装
クラス VipUser は User{
を実装します //VIPユーザー割引係数
プライベート $割引 = 0.8;
関数 getDiscount() {
返品 $this->割引;
}
関数 getUserType() {
return "VIP ユーザー";
}
}
クラスグッズ{
var $price = 100;
var $vc;
// ユーザー インターフェイス タイプのパラメーターを定義します。現時点ではそれがどのユーザーであるかはわかりません
関数実行(ユーザー $vc){
$this->vc = $vc;
$discount = $this->vc->getDiscount();
$usertype = $this->vc->getUserType();
echo $usertype."製品価格:".$this->price*$discount;
}
}

$display = 新しいグッズ();
$display ->run(new VipUser) // 他のユーザータイプも可能
?>

この例を実行すると、次のように出力されます:

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

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

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

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

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

クラスのサブクラスは親クラスの実装を拡張し、インターフェイス 1、インターフェイス 2、...
{

}


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


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

1. サブクラスがインターフェイスを実装する場合は、そのインターフェイス内のすべてのメソッドを実装する必要があります (必要かどうかに関係なく)。抽象クラスを継承する場合は、必要なメソッドのみを実装する必要があります。
2. インターフェイスで定義されたメソッド名が変更された場合、このインターフェイスを実装するすべてのサブクラスはメソッド名を同期的に更新する必要があり、抽象クラスでメソッド名が変更された場合でも、そのサブクラスの対応するメソッド名は影響を受けません。ただし、それは (古いメソッドの実装と比較して) 新しいメソッドになるだけです。
3. 抽象クラスは 1 つだけ継承できます。複数の親クラスから継承する必要がある関数をサブクラスで実装する必要がある場合は、インターフェイスを使用する必要があります。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632642.html技術記事 PHP クラスのインターフェイスのアプリケーション キーワードは、インターフェイスと実装です。インターフェイスは、そのメンバー属性がすべて抽象または定数である特別な抽象クラスです。以下にいくつかの例を見てみましょう。 クラス内のインターフェースのアプリケーション...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート