<?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在这里是指克隆以后的对象
?>
时间: 2024-10-09 23:50:12