【PHP】php多态

多态的含义是:同一类的对象收到相同消息时,会得到不同的结果。而这个消息是不可预测的。多态,顾名思义,就是多种状态,也就是多种结果。

例1

<?php 

class employee{
    protected function working(){
        echo '本方法需要重载';
    }
}

class teacher extends employee{
    public function working(){
        echo '教书';
    }
}

class coder extends employee{
        public function working(){
        echo '写代码';
    }
}

function doprint($obj){
    if(get_class($obj) == 'employee'){
        echo 'Error';
    }else{
        $obj->working();
    }
}

doprint(new teacher());
doprint(new coder());
doprint(new employee());

例2

<?php 

interface employee{
    public function working();
}

class teacher implements employee{
    public function working(){
        echo '教书';
    }
}

class coder implements employee{
        public function working(){
        echo '写代码';
    }
}

function doprint(employee $i){
    $i->working();
}

$a = new teacher;
$b = new coder;
doprint($a);
doprint($b);

例2和例1没多少区别,不过代码中doprint函数的参数是一个接口类型的变量,符合“同一类型,不同结果”这一条件,具有多态性的一般特性,因此是多态
例1中如果把doprint函数的obj参数看做一种类型(把所有弱类型看做一种类型),那也可以认为是多态,否则不是
区别是否是多态的关键在于看对象是否属于同一类型
php中父类和子类看做“继父”和“继子”关系,它们存在继承关系,但是不存在血缘关系。因此子类无法向上转型为父类,从而失去多态最典型的特性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值