13.1.5 面向对象的多态
多态是对象的一种能力,它可以在运行时根据传递的对象参数,决定调用哪个对象的方法。例如,如果读者有一个"figure"的类,它定义了一个draw的方法。并且派生了circle和"rectangle"类,在派生类中读者覆盖了draw方法,读者可能还有一个函数,它希望使用一个参数x,并且可以调用"$x->draw()"。如果读者有多态性,调用哪个draw方法依赖于读者传递给这个函数的对象类型。
多态性在像PHP这样的解释语言中是非常容易和自然的,所以PHP当然支持多态性,如代码13.6所示。
代码13.6 多态在PHP中的应用程序:13-6.php
<?php
//**
//名称:13-6.php
//功能:多态在php中的应用
//**
function niceDrawing($x){//定义方法
/假设这是Board类的一个方法/
$x->draw();
}
$obj=new Circle(3,187);//新建一个方法
$obj2=new Rectangle(4,5);//新建第2个方法
$board->niceDrawing($obj);//新建第2个方法
/将调用Circle的draw方法/
$board->niceDrawing($obj2);
?>
注意 PHP是支持多态性的。PHP也是一种解释语言,所以非常容易和自然地支持多态性。