码迷,mamicode.com
首页 > 其他好文 > 详细

类的三大特性——多态

时间:2016-04-28 17:02:47      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

<?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在这里是指克隆以后的对象

?>

 

类的三大特性——多态

标签:

原文地址:http://www.cnblogs.com/nannan-0305/p/5443061.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!