PHP チュートリアル クラスでのポリモーフィズムの適用
Instanceof: 指定されたオブジェクトが指定されたオブジェクト クラスに由来するかどうかを判断するために使用されます
クラス A{}
クラス B{}
$thing=new A();
//return true
if ($thing instanceof A) {
echo 'A';
}
//return false
if ($thing instanceof B) { Echo 'B'; UTF-8");
インターフェース MyUsb{
function type();
functionalert();
}
class Zip は MyUsb{
function type(){
echo " 2.0 " を実装します;
}
functionalert(){
echo "USB ドライブをチェックしています";
}
}
class Mp3 は MyUsb{
function type(){
echo "1.0"; $what->type ();
$what->alert();
$pc->PcUsb($zip);//USB ディスクが接続されているとき
エコー "< br/>";
$pc->PcUsb($mp3);/ /MP3 が接続されているとき
?>
実行結果:
2.0 は U ディスクドライバーをチェックしています
1.0 はチェックしていますMP3 ドライバーオブジェクト参照は、親クラス参照、子クラス参照、クラス参照に関係なく同じです。 次に例を見てみましょう。まず、ポリモーフィズムを使用するには、親クラス オブジェクトとサブクラス オブジェクトの間に関係が必要です。シェイプ インターフェイスまたは抽象クラスを親クラスとして作成します。その中には 2 つの抽象メソッドがあり、1 つは境界を見つけるもの、もう 1 つは領域を見つけるものです。このインターフェイスのサブクラスはさまざまなシェイプであり、それぞれが Shape です。 perimeter と area があり、親クラスがインターフェイスであるため、サブクラスは親クラスの perimeter と area の 2 つの抽象メソッドを実装する必要があります。これは、サブクラスがそれぞれ異なる形状にすべて準拠するようにするためです。親クラスのインターフェースの仕様に準拠し、周囲長と面積を計算するメソッドを備えています。
コードは次のとおりです:// サブクラスが実装する 2 つの抽象メソッドを含むシェイプ インターフェイスを定義します。
interface Shape{
function area();// A長方形のサブクラスは、形状インターフェイスの周囲と領域を実装するために定義されています。 width;
$this->height=$height;}
function area(){return "長方形の面積は次のとおりです。".($this->width*$this->height) ;
}function perimeter(){
return "長方形の周囲長は次のとおりです:".(2*($this->width+$this->height));}
}//円を定義します。このクラスは、形状インターフェイスに境界と領域を実装します。
class Circular は、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); ;area( )."echo $shape->perimeter()."
";
$shape=new Circular (10 );
echo $shape->area()."echo $shape->perimeter()."
"; の実行結果上記例:
長方形の面積:50
長方形の周囲長:30円の面積:314
円の周囲長:62.8上の例では、長方形のオブジェクトと円形のオブジェクトが分離されていることがわかります。変数 $shape に代入すると、$shape 参照内の area メソッドと perimeter メソッドが呼び出され、異なる結果が表示されます。私たちの PHP はオブジェクト指向の弱い型ですが、ポリモーフィズムの特徴は実際にはオブジェクト型変数の適用です。