透彻理解PHP多态性的实现
多态性是相同的操作或函数,进程可以在各种类型的对象上使用,并获得不同的结果,不同的对象,接收相同的消息,可以产生不同的结果。这种现象被称为多态现象。多态性允许每个对象以一种适合自己的方式响应公共消息。多态性增强了软件的灵活性和可重用性。
在面向对象的软件开发中,多态性是最重要的部件之一。面向对象程序设计不仅是一个简单的相关的方法和数据的组合,而且还利用面向对象编程的各种元素,现实生活中的情况下,一个清晰的描述。本节给出了在面向对象的多态性的详细解释。
1。什么是多态性
多态性(多态性)是在各种形状从字面上理解,可以理解为多种形式,即外部接口,和多个内部实现方法。在面向对象理论中,多态性的定义是相同的操作作用于不同类的实例,将产生不同的执行结果。那就是,当不同类别的对象接受同样的信息,不同的结果。
在实际应用中,面向对象的多态性主要表现在不同的子类对象作为父类来对待,以及不同的屏蔽子类对象之间的差异,编写泛型代码,做一个通用的编程,以适应不断变化的需求。
2。多态的应用设计
在实际的应用开发,通常为了使项目易于扩展和升级在未来的时间,有必要通过继承升级可重用的模块。当可重用的模块设计,它是必要的减少流程控制语句使用尽可能。这种设计可以实现此时的多态性。
例如,流程控制语句通常用于实现不同的类。
复制代码代码如下所示:
< PHP
类画家{画家类定义
公共函数(画笔)定义动作画家
画家在油漆油漆!;
}
}
类打字员{打字员类定义
公共函数(类型){工作定义
打字员在打字!;
}
}
功能printworking($ obj){ / /定义类
如果($ obj是画家){ / /如果对象是一个画家,是行动的画家
$ obj ->画笔();
} elseif($ obj是打字员){ / /如果对象是一个打字员,给打字员的行动
$ obj ->输入();
}如果在上面,则显示错误消息
错误:对象错误!;
}
}
printworking(新)(画家); / /显示员工
printworking(新)(打字员); / /显示员工
>
分析:在上述程序中,两职类的第一定义:画家和打字员。然后一个处理函数的定义,即员工被评为定义的员工,和员工的工作状态是印。结果如下。
油漆工正在刷油漆。
打字员正在打字。
从上面的程序可以很容易地看到,展示员工的工作状态的类型,首先需要明确员工的班,并在工作人员的工作定义类的员工,然后在printworking(道)增加功能的语句来检查这类Employee实例的对象。这是非常不可取的在实际应用中,如果使用多态性是在这个时候,这个问题很容易解决。
您可以首先创建一个雇员父类,所有这些类都将从父类继承,并继承父类的所有方法和属性。
{枚举枚举重写上述的多态方法。代码如下所示。
复制代码代码如下所示:
< PHP
类雇员定义了雇员父类
保护功能(工作)的工作人员定义需要在子类中实现。
在子类中需要重载此方法!;
}
}
类画家扩展雇员定义画家
公共函数(工作)的继承实现方法
画家在油漆油漆!;
}
}
类打字员扩展雇员定义一个打字员类
公共函数工作(){
打字员在打字!;
}
}
类管理器扩展雇员定义管理器类
公共函数工作(){
经理在开会!;
}
}
功能printworking($ obj){ / /定义方法
如果($ obj是雇员){ / /如果Employee对象显示工作状态
$ obj ->工作();
}否则,则显示错误信息
错误:对象错误!;
}
}
printworking(新)(画家); / /显示画家的作品
printworking(新)(打字员); / /显示打字员的工作
Printworking (New) (Manager); / / display manager
>
分析:在上面的程序,一个员工基类的第一定义定义和一个员工工作状态的方法的定义,然后定义了三类员工员工会从基类继承:画家、打字员、和管理。明确显示该员工的工作状态的方式。在这个方法中,一个关系来决定它是否是合法的。结果如下。
油漆工正在刷油漆!
打字员正在打字!
经理正在开会!
从上面的例子可以发现,是否增加员工人数,员工只需要实现的类和方法从父类继承的员工。有没有需要修改的方法printworking()显示该员工的工作状态。