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; //显示张三