PHP面向对象三大特性③


今天学习了面向对象的第三个特性:多态

多态的概念:当父类引用指向子类实例的时候,由于子类对父类函数进行了重写,导致了我们在使用该引用去调用相应的方法表现出的不同

发生多态的条件:1.必须存在继承关系

                      2.必须对子类的函数进行重写

class Ren
{
    public $name;
    public $sex;
    
    function Say()
    {
        echo "hello";
    }
    function __tostring()
    {
        return "这个对象包含变量name和sex,一Say 方法";
    }
    function __clone() //对象克隆的时候自动执行
    {
        $this->name="李四";//$this 指复本(克隆出来的新对象)
    }
}
class China extends Ren
{
    function Say()
    {
        echo "你好";
    }
    
}

另一个知识点:

函数重载 【了解,PHP中不存在,在强类型语言中比较重要】

重载条件:1.函数名必须相同

              2.函数参数个数不一样,如果个数相同,类型不同才能执行

function test ()      //不定义参数执行此函数
{
   echo "hello";     
}
function test ($eg)      //定义一个参数执行此函数
{
   echo "hello world";
}
function test ($eg,$eg1,....)   //定义一个或多个执行此函数
{
   echo "hello world everyday";
}

php为何不存在函数重载?

1.PHP是弱类型语言

2.PHP有可变变量的函数


对象的克隆:用clone关键字

$r=new Ren();
$r->name="张三";
$r1=clone $r;                                                            
echo $r1->name;   //显示李四
echo $r->name;     //显示张三
原文地址:https://www.cnblogs.com/Itwonderful/p/5443175.html