ホームページ > php教程 > php手册 > PHP学習メモ オブジェクト指向における[インターフェース]と[ポリモーフィズム]の応用

PHP学習メモ オブジェクト指向における[インターフェース]と[ポリモーフィズム]の応用

WBOY
リリース: 2016-06-13 12:08:19
オリジナル
1022 人が閲覧しました

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


/* インターフェース技術
*
* インターフェースは特別な抽象クラスであり、抽象クラスは特別なクラスです
*
* インターフェースと抽象クラスは同じ機能を持ちます
*
* PHP は単一継承なので、抽象クラスを使用すると、その抽象クラスを実装するサブクラスは他のクラスを継承できません
*
* を実装したい場合一部の仕様と他のクラスを継承します。インターフェースを使用するだけです。
*
* インターフェイスと抽象クラスの比較
*
* 1. これらは同じ機能を持ち、どちらもオブジェクトを作成できず、どちらも実装するためにサブクラスが必要です
*
* 2 . インターフェイス 宣言は抽象クラスとは異なります
*
* 3. インターフェイスの実装方法は異なります
*
* 4. インターフェイス内のすべてのメソッドは抽象メソッドである必要があり、抽象メソッドのみが使用できます(抽象的な変更を使用する必要はありません)
*
* 5. インターフェース内のメンバー属性は定数としてのみ宣言でき、変数は宣言できません
*
* 6. インターフェース内のメンバーのアクセス権インターフェイスはパブリックかつ抽象である必要があります。 クラス内の最低の権限は保護されています。
*
* インターフェイスを宣言します。 インターフェイス インターフェイス名 { };
*
* 7. 代わりにクラスを使用してインターフェイスを実装します。 extends を使用する場合は、implements キーワードを使用します
*
* サブクラスが親インターフェイスの抽象メソッドをオーバーライドする場合は、implements (実装)、クラス--インターフェイス、抽象クラス--インターフェイスを使用して、implements、インターフェイス--インターフェイスは extends (継承) を使用します
*
* 抽象クラスを使用して、インターフェイス
の一部のメソッドを実装できます* サブクラスでオブジェクトを作成する場合は、インターフェイス
* にすべてのメソッドを実装する必要があります別のインターフェイスを継承するインターフェイスを定義できます。
* クラスは複数のインターフェイスを実装できます (複数の仕様に従ってサブクラスを開発するため)。カンマを使用して複数のインターフェイス名を区切ります。
* クラスは 1 つのクラスを継承し、1 つのクラスを実装できます。複数のインターフェイスを同時に実装します。 🎜>*
* 2. extends ワードを使用せずにクラスを継承できるため、両方を同時に使用できます。
*
* ポリモーフィズム: ポリモーフィズムは、オブジェクトの 3 つの主要な機能の 1 つです。 Oriented
*
* " 「ポリモーフィズム」は、オブジェクト指向設計の重要な機能です。これは、「ポリモーフィズム」としても知られる動的バインディングの機能を示します。ポリモーフィック機能により、ソフトウェアは開発およびメンテナンス中に完全な拡張を実現できます。実際、ポリモーフィズムの最も直接的な定義は、継承関係を持つ異なるクラスのオブジェクトが、同じ名前のメンバー関数呼び出しに対して異なる応答を生成できるようにすることです。
*
*
*
*
*
*/
//宣言インターフェース
インターフェースデモ{
const HOST="localhost"; >const USER="admin";
function fun1();//メソッドを宣言するときにabstractを追加する必要はありません。これがデフォルトです。権限は public
function fun2();
}
// インターフェイス
の継承 Demo2 extends Demo {
function fun3();

インターフェイス デモ3{
関数 fun5();
関数 fun6();
インターフェイス デモ 4{
関数 fun7();
エコー デモ::HOST;//インターフェイス内の定数にアクセスできます
class Hello{
function fun8(){
}
}
//サブクラスはインターフェイス内のすべてのメソッドを実装する必要があります
class UTest extends Helloimplements Demo2,Demo3,Demo4 { //複数のインターフェースを実装
function fun1(){
}
function fun2(){
}
function fun3(){
}
関数 fun4(){
}
関数 fun5(){
}
関数 fun6(){
}
関数 fun7(){
}
}
/*-------------------ポリモーフィズム---------------*/
インターフェースTest{
function fun1();
function fun2();
}
クラス 1 は Test{
function fun1(){
echo "aaaaaaaa";
function fun2(){
echo "bbbbbbbbbbbb";
}
}
クラス 2 は Test{
function fun1(){
echo "11111111" ; >}
function fun2(){
echo "2222222222";
}
}
//同じインターフェースが同じメソッド、異なるオブジェクトを実装し、出力が異なります。これはポリモーフィズムのパフォーマンスと応用です
$test=new One;
$test->fun1();//出力行 a
$test->fun2();//出力a line b
$test=new Two;
$test->fun1();//1 行を出力
$test->fun2();//2 行を出力
?>
/*--------------USB デバイスの使用をシミュレートするポリモーフィック アプリケーションの例----- -----*/
//USB インターフェース
interface USB{
function mount();//USB の読み込み方法
function work();// USB の仕組み
function unmount();//USB をアンマウントするメソッド
}
//USB デバイス U ディスクを定義します
クラス Upan は USB を実装します{//USB インターフェイスを実装します
関数 mount (){
echo "USB ディスクは正常にロードされました
";
}
function work(){
echo "USB ディスクは動作を開始しました
";
}
function unmount(){
echo "U ディスクが正常にアンマウントされました
"
}
}
//USB デバイス USB マウスを定義します
class Umouse は USB を実装します{//USB インターフェイスを実装します
function mount(){
echo " USB キーボードが正常にロードされました

}
function work(){
echo "USB キーボードが動作を開始しました
";
}
function unmount(){
echo "USB キーボードが正常にアンインストールされました
";
}
//コンピュータ クラスを定義します
class Computer{
//USB デバイスを使用するメソッド
function useUSB ($usb){//$usb パラメータは、使用する USB デバイスを示します
$ usb- >mount();//デバイスのマウント メソッドを呼び出します
$usb->work();//デバイスの作業メソッドを呼び出します
$usb->unmount(); //デバイスのアンマウントを呼び出す Method
}
}
//コンピュータのユーザークラスを定義
class PcUser{
//USB をインストールするメソッド
function install(){
// まずコンピューターを入手します
$pc=new Computer;
// USB デバイスを入手します
$up=new Upan;// USB フラッシュ ドライブを入手します
$um=new Umouse; //USB マウスを取得します
//USB デバイスをコンピュータに挿入し、コンピュータ内の USB デバイスを使用して挿入するデバイスを呼び出します
$pc->useUSB($ up);//U ディスクを挿入
$pc->useUSB($um);//USB マウスを挿入
}
}
//コンピュータ ユーザーをインスタンス化
$user= new PcUser;
$user->install();//デバイスをインストール
/*---------------出力内容---------- ---
U ディスクが正常にロードされました
U ディスクが動作を開始しました
U ディスクが正常にアンインストールされました
USB キーボードが正常にロードされました
USB キーボードが動作を開始しました
USB キーボードが正常にアンインストールされました
-- ------ ------------------------*/
?>

作成者: コードネーム オーロラ
http://www.cnblogs.com/zizhuyuan/archive/2011/06/16/2082262.html
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート