ホームページ  >  記事  >  バックエンド開発  >  PHP におけるポリモーフィズム

PHP におけるポリモーフィズム

墨辰丷
墨辰丷オリジナル
2018-06-09 11:57:046227ブラウズ

この記事では主に PHP のポリモーフィズムについて紹介します。興味のある方はぜひ参考にしてください。

ポリモーフィック定義: オブジェクトの特定のクラスではなく、インターフェイスまたは基本クラスのみを考慮します。 (同じ型、異なる結果)

ここに 2 つの例があります:

まず、基本クラスが標準を定義し、サブクラスが独自のルールを実装していることがわかりました。これはポリモーフィズムの要件です。同時に、これは書き換えを満たすためのものであり、実際には、異なるクラスの異なるパフォーマンスであり、インターフェイスや基本クラスのプログラミングを厳密に満たすものではありません。呼び出したときは stu->showGrade() ではなく、独自のメソッドが呼び出されるからです。


class stu{

  public function showGrade(){
    echo "base class";  
  }

}


class xiaomin extends stu{

  public function showGrade(){
    echo "is son show 80";  
  } 
}

class xiaoli extends stu{

  public function showGrade(){
    echo "is son show 60";  
  } 
}

function doit($obj){

  if(get_class($obj) != "stu"){
    $obj->showGrade();
  }

}

doit(new xiaoli());
doit(new xiaomin());


2 番目の例: dovoice パラメータは、$obj がanimalであることを規定しています。これは、実装クラスのオブジェクトがインターフェースを通じて受け入れられることを意味します。上向きの変革。これは、同じ型でも異なる結果と一致します。

実際、PHP は型付き言語であるため、次のようになります。オブジェクト変換メカニズムはありません。


interface animal{
  public function voice();
}

class cat implements animal{
  public function voice(){
    echo "miao~~~<br>";
  }
}

class dog implements animal{
  public function voice(){
    echo "wang ~~~<br>";
  }
}

function dovoice(animal $obj){
  $obj->voice();
}


dovoice(new dog());
dovoice(new cat());

要約: 以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。

関連する推奨事項:

php 順序なしツリーの実装スキル

php 順序なしツリーの実装スキル

php は、画像サイズの変更、透かし、検証コードの生成、出力と保存を操作します

##

以上がPHP におけるポリモーフィズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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