多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息将可以产生不同的结果,这种现象称为多态性。
多态性允许每个对象以适合自身的方式去响应共同的消息。多态性增强了软件的灵活性和重用性。
在面向对象的软件开发中,多态性是最为重要的部分之一。面向对象编程并不只是将相关的方法与数据简单的结合起来,而是采用面向对象编程中的各种要素将现实生活中的各种情况清晰的描述出来。这一小节将对面向对象编程中的多态性作详细的讲解。
什么是多态
多 态(Polymorphism)按字面上意思理解就是“多种形状”。可以理解为多种表现形式,也即“一个对外接口,多个内部实现方法”。在面向对象的理论 中,多态性的一般定义为:同一个操作作用于不同的类的实例,将产生不同的执行结果。也即不同类的对象收到相同的消息时,将得到不同的结果。
在实际的应用开发中,采用面向对象中的多态主要在于可以将不同的子类对象都当作一个父类来处理,并且可以屏蔽不同子类对象之间所存在的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。
下面通过一个例子说明:
interface Iemployee
{
public function working();//定义一个接口的父类
}
class painter implements Iemployee
{
public function working()
{
echo ‘油漆工正在刷漆!
‘;
}
}
class typist implements Iemployee
{
public function working()
{
echo ‘打字员正在打字!
‘;
}
}
class manager implements Iemployee
{
public function working()
{
echo ‘经理正在开会!
‘;
}
}
function printworking($obj)
{
if($obj instanceof Iemployee)
{
return $obj->working();
}else
{
echo "Error: 对象错误!";
}
}printworking(new painter());
printworking(new typist());
printworking(new manager());
//油漆工正在刷漆!
//打字员正在打字!
//经理正在开会!