在PHP5中实现多态的方法有哪些

介绍

今天就跟大家聊聊有关在PHP5中实现多态的方法有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

<强>通过实现接口实现多态

代码如下:


& lt; ?php
界面用户{//用户接口
,,,,公共function getName ();
,,,,公共职能setName ($ _name);
}

类NormalUser实现用户{//实现接口的类。
,,,,私人名义美元;
,,,,公共职能getName () {
,,,,,,,,返回$ this→名称;
,,,,}
,,,,公共职能setName (_name美元){
,,,,,,,,这个→美元=$ _name名称;
,,,,}
}

类UserAdmin{//操作。
,,,,公共静态function ChangeUserName(用户_user美元,美元_userName) {
,,,,,,,,美元_user→setName ($ _userName);
,,,,}
}

normalUser美元=new normalUser ();
UserAdmin: ChangeUserName (normalUser美元,“Tom");//这里传入的是normalUser的实例。
echo $ normalUser→getName ();
?在

<强>使用接口与组合模拟多继承

通过组合模拟多重继承。

在PHP中不支持多重继承,如果我们向使用多个类的方法而实现代码重用有什么办法么?

那就是组合。在一个类中去将另外一个类设置成属性。

下面的例子,模拟了多重继承。

<强>接口实例

写一个概念性的例子。我们设计一个在线销售系统,用户部分设计如下:将用户分为,NormalUser, VipUser, InnerUser三种。要求根据用户的不同折扣计算用户购买产品的价格。并要求为以后扩展和维护预留空间。

代码如下:


& lt; ?php
界面用户
{
,,,,公共职能getName ();
,,,,公共职能setName ($ _name);
,,,,公共职能getDiscount ();
}
抽象类AbstractUser实现用户
{
,,,,私人$ name=啊啊?br/>,,,, protected $折扣=0;
,,,, protected $等级=啊?br/>,,,,功能__construct (_name美元){
,,,,,,,,这个→美元setName ($ _name);null

在PHP5中实现多态的方法有哪些