<?php
class Ren
{
public $name;
public $age;
private $sex;
function run()
{
echo "run";
}
}
class china extends Ren
{
function run()
{
echo "跑";
}
function say()
{
echo "第一";
}
/*function say(string $a)
{
echo $a."第二";
}
function say(int $a)
{
echo $a."第二2";
}
function say($a,$b)
{
echo $a.$b."第三";
}*/
function __tostring() //可以输出类的一些描
{
return "输出,一个say方法";
}
function __clone() //克隆之后自动执行
{
$this->name = "李四"; //$this 指克隆之后的复本(克隆出来的新对象)
}
}
//多态
//定义:当父类引用,指向子类实例的时候,由于子类对父类进行了重写,导致我们使用该引用去调用相应的方法时表现出得不同
//条件:
//1.必须有继承
//2.父类的引用必须指向子类的实例
//3.子类必须有对父类的方法重写
/*$r=new ren;//父类引用
$r1 = new china;//子类引用
echo $r->run();
echo "<br />";
echo $r1->run();*/
//函数重载(php中没有重载)
//条件
//1.函数名必须相同
//2.参数个数不同,或者,参数个数相同,类型不同
//php是弱类型语言,所以没有重载
//php有可变参数的函数
/*$r=new china;
$r->say();*/
//__tostring()
/*$r = new china;
echo $r;*/
//对象的克隆
$r = new china;
$r->age=17;
$r1 = clone $r; //克隆对象
echo $r1->age;
//对克隆之后的对象做一些改变:__clone()
echo $r1->name;
?>