ポリモーフィズムの応用 私の個人的な意見では、ポリモーフィズムはカプセル化と継承に加えてオブジェクト指向の 3 つの主要な機能の 1 つです。ポリモーフィズムは PHP で実現できますが、C++ や Java などのオブジェクト指向の手法とは異なります。 PHP 自体は弱い型付け言語であり、親クラス オブジェクトをサブクラス オブジェクトに変換したり、サブクラス オブジェクトを親クラス オブジェクトに変換したりする問題がないため、ポリモーフィズムはそれほど顕著ではありません。そのため、ポリモーフィズムの適用はそれほど明白ではありません。 - ポリモーフィズムと呼ばれるのは、複数の種類のオブジェクトを処理できるプログラムの機能を指します。たとえば、会社で働いている場合、財務部門は同じ賃金支払い方法を社内で使用できます。経歴や役職はすべてこの方法で支払われますが、支払われる賃金は異なります。
同じ賃金の支払い方法がさまざまな形で登場します。オブジェクト指向プログラムの場合、ポリモーフィズムは、サブクラスのオブジェクトを親クラスの参照に割り当て、その後、サブクラスが親クラスをオーバーライドするメソッドを実行することを意味します。ただし、PHP では、オブジェクト参照は弱く型付けされます。親クラス参照またはサブクラス参照に関係なく同じです。
まず例を見てみましょう。まず、ポリモーフィズムを使用するには、親クラスのオブジェクトとサブクラスのオブジェクトの間に関係が必要です。形状インターフェイスまたは抽象クラスを親クラスとして作成します。その中には、境界を見つけるためのメソッドと、領域を見つけるための 2 つの抽象メソッドがあります。このインターフェイスのサブクラスは、それぞれの形状に応じてさまざまな形状を持ちます。境界と領域であり、親クラスはインターフェイスであるため、サブクラスは親クラスの境界と領域の 2 つの抽象メソッドを実装する必要があります。その目的は、さまざまな形状のすべてのサブクラスがすべて親の仕様に準拠することです。クラス インターフェイスがあり、すべてに周囲長と面積を計算するメソッドがあります。
コードスニペット
コードをコピー
コードは次のとおりです:
//サブクラスが実装するための 2 つの抽象メソッドを持つシェイプ インターフェースを定義します
interface Shape{
function area() ;
function perimeter();
} //形状インターフェイスの周囲と領域を実装する四角形のサブクラスを定義します class Rectimplements Shape{ private $height; function __construct($width , $height; ){
$this->width=$width;
$this->height=$height;
}
function area(){
return "長方形の面積は次のとおりです: ".($this- > ;width*$this->height);
}
function perimeter(){
return "長方形の周囲長は次のとおりです。".(2*($this->width+$this->height)) ;
}
}
//形状インターフェイスの周囲と領域を実装する円形のサブクラスを定義します
class Circularimplements Shape{
function __construct($radius){
$this->radius= $半径;
}
function area(){
return "円の面積は次のとおりです: ".(3.14*$this->radius*$this->radius);
}
function perimeter(){
return "円の円周は次のとおりです:".(2*3.14*$this->radius);
}
}
//サブクラスの四角形オブジェクトを形状の参照に代入します
$shape=new Rect( 5, 10);
echo $shape->area()."
";
echo $shape->perimeter()."
";
// サブクラスの円形オブジェクトを代入します。形状への参照
$shape=new Circular(10);
echo $shape->area()."
";
echo $shape->perimeter()."
" ;
?>
上記例の実行結果:
実行結果
長方形の面積: 30
円の面積: 314
円の周囲長は 62.8 です。
上記により、たとえば、変数 $shape に長方形オブジェクトと円形オブジェクトがそれぞれ割り当てられ、$shape 参照内の
の area メソッドと perimeter メソッドが次のようになっていることがわかります。これはポリモーフィック アプリケーションです。実際、PHP のような弱い型のオブジェクト指向言語では、ポリモーフィズムの特徴はオブジェクト型変数の適用ではありません。
http://www.bkjia.com/PHPjc/320620.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/320620.html
技術記事
ポリモーフィズムの応用 ポリモーフィズムは、カプセル化と継承に加えてオブジェクト指向の 3 つの主要な特徴の 1 つです。私の個人的な意見では、ポリモーフィズムは PHP で実現できますが、C++ や Java ほどオブジェクト指向的ではありません...
。