ホームページ  >  記事  >  バックエンド開発  >  ポリモーフィズムとは何ですか? PHP オブジェクト指向ポリモーフィズムのサンプル チュートリアル

ポリモーフィズムとは何ですか? PHP オブジェクト指向ポリモーフィズムのサンプル チュートリアル

伊谢尔伦
伊谢尔伦オリジナル
2017-06-29 09:53:482390ブラウズ

ポリモーフィズムとは何ですか?

ポリモーフィズムは、データベース抽象化と継承に続く、オブジェクト指向言語の3番目の機能です。ポリモーフィズムは複数の形式を指し、複数の形式を表現する能力を持っています。オブジェクト指向では、オブジェクトのタイプに応じて表現が異なる方法で処理されます。ポリモーフィズムにより、各オブジェクトが独自の方法で共通のメッセージに応答できます。ポリモーフィズムにより、ソフトウェアの柔軟性と再利用性が向上します。

doing() メソッドを作成すると、学生であれば授業用に印刷され、会社員であれば仕事用に印刷されます。

一般的なアプローチ

if 判定を使用する

/**
 * PHP多态性
 */
 
// 定义学生类
class student{
    public function cla(){
            echo "学生工正在上课!<br />";
    }
}
 
// 定义职员类
class office{                              
        public function Wor(){
            echo "职员正在上班!<br />";
        }
}
 
// 判断对象类型方法
function doing($obj){ 
        if($obj instanceof student){ 
            $obj->cla();
        }elseif($obj instanceof office){
            $obj->wor();
        }else{
            echo "没有这个对象!";
        }
}
 
doing(new student()); // 学生正在上课
doing(new office());  // 职员正在上班

上記の結果出力:

生徒は授業中
スタッフは仕事中

この一般的な方法には欠点があります。つまり、オブジェクトが多数ある場合は if になります。 ..else... 長くて柔軟性がない。

ポリモーフィズムの実践

パブリック抽象メソッドを定義すると、すべてのサブクラスがそれを継承します。

/**
 * PHP多态性
 */
 
// 定义一个公共类
class pub{
    protected function working(){
        echo "本方法需要在子类中重载!";
    }
}
 
// 定义学生类,继承公共类pub
class student 
extends
 pub{
    public function working(){
        echo "学生工正在上课!<br />";
    }
}
 
// 定义职员类,继承公共类pub
class office extends pub{
        public function working(){
        echo "职员正在上班!<br />";
        }
}
 
// 判断对象类型方法
function doing($obj){ 
        if($obj instanceof pub){ 
            $obj->working();
        }else{
            echo "没有这个对象!";
        }
}
 
doing(new student()); // 学生正在上课
doing(new office());  // 职员正在上班

これはポリモーフィズム、柔軟な再利用の特徴です。

その他の 実践

ポリモーフィズムの実装の観点から見ると、統一された効果を達成するために各クラスが親クラスのメソッドをオーバーライドする必要があるということは、標準化に他なりません。クラスを定義する際に、統一されたメソッドを独自に追加することも可能です。したがって、上記の例は次のように実装することもできます:

/**
 * PHP多态性
 */
 
// 定义学生类
class student{
    // 定义统一的方法pub
    public function pub(){
        echo "学生工正在上课!<br />";
    }
}
 
// 定义职员类
class office{
    // 定义统一的方法pub
        public function pub(){
        echo "职员正在上班!<br />";
        }
}
 
// 判断对象类型方法
function doing($obj){ 
    if($obj){
        // 调用类的统一方法
            $obj->pub();
    }else{
        echo &#39;没有这个对象&#39;;  
    }
}
 
doing(new student()); // 学生正在上课
doing(new office());  // 职员正在上班

ポリモーフィズムはプログラミング手法としても理解でき、プログラミングの最終目標は柔軟性、ポリモーフィズム、再利用、効率にほかなりません。

以上がポリモーフィズムとは何ですか? PHP オブジェクト指向ポリモーフィズムのサンプル チュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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