标签:
面向对象第三大特性:多态
概念: 当父类引用指向子类实例的时候,由于子类对父类函数进行了重写,导致我们在使用该引用取调用相应方法时表现出的不同
条件: 1.必须有继承
2.子类必须对父类的方法进行重写
多态在弱类型语言中表现不明显,在强类型语言中表现比较明显,在php中不用考虑.
class Ren
{
public $name;
public $sex;
function say()
{
echo "hello";
}
}
class China extends Ren
{
function say()
{
echo "你好";
}
}
$r =new Ren();
$r1 =new China();
多态在强类型语言中可用父类引用指向子类的实例,php不用规定变量的类型,多态不明显.
函数重载:
1.方法名必须一样
2.函数里面参数个数不同
3.如果参数个数相同,类型不同
函数重载只在强类型语言中有,弱类型语言中没有
php是弱类型语言,php有可变参数的函数,且不用规定参数类型,不满足函数重载的条件.
function say()
{
echo "hello";
}
function say($a)
{
echo $a."hello";
}
function say($a,$b)
{
echo $a.$b."hello";
}
三个say()方法,随参数个数不同,调用的函数也不同.
__tostring()方法: 输出类的一些描述
function __tostring()
{
return "这个对象包含变量name和sex,一个say方法";
}
$r= new Ren();
echo $r; 输出return值
对象的克隆:
$r=new Ren();
$r->name="张三";
$r1 =clone $r; //克隆对象
var_dump($r1);
在克隆时,想要对克隆的新对象中添加一些特殊的东西,需要在Ren类中加入__clone方法
function __clone()
{
$this->name="李四"; //$this是复本(克隆之后的新对象)
}
echo $r->name;
echo $r1->name;
输出:张三李四
标签:
原文地址:http://www.cnblogs.com/xinghun/p/5444896.html