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