<?php
class Ren
{
public $name;
public $sex;
function Say()
{
echo "hello";}
function Say($a)
{
echo $a."hello";
}
function Say($a,$b)
{
echo $a.$b."hello";
}
function __tostring()
{
return "这个对象包含变量name和sex,一个say()方法";
}
function __clone() //对象克隆的时候自动执行
{
$this->name="李四"; //$this在这里是代表的是克隆之后的对象
}
}
class China extends Ren
{
function Say()
{
echo "你好";}
}
$r=new Ren();//$r代表Ren类的引用
$r1=new China();//$r1代表China的引用
echo $r;
//多态
//概念:当父类引用指向子类实例的时候,有子类对父类函数进行了重写,导致我们在使用该引用去调用相应的方法的时候表现出的不同
//发生条件:1.必须有继承
//子类必须要对父类的方法进行重写
//函数重载(强类型语言才会有)
//函数重载条件:1.函数名必须相同;
//2.函数里边参数的个数不同
//3.如果个数相同,类型不同
//方法名必须一样,方法名一样的的情况下参数的个数不同,参数的个数相同的情况下,参数的类型不一样
//php是弱类型语言,所以没有重载
//php有可变参数的函数
//__tostring()方法
//对象的克隆
$r=new Ren();
$r->name="张三";
$r1=clone $r;//克隆对象用的,相当于复制,这一步等同于 $r1=new Ren();$r1->name="张三";
var_dump($r1);
echo $r->name;
echo $r1->name;//如果没有clone()方法,此刻$r和$r1的name都是张三;
function __clone() //对象克隆的时候自动执行
{
$this->name="李四"; //$this在这里是代表的是克隆之后的对象
}
如果在类/父类中加了function __clone()方法,那么$r1->name就是李四了,这里需要注意的是$this在这里是指克隆以后的对象
?>