• php 之 类,对象(三)多态性,函数重载,克隆


    一、三大特性之三 多态性(在php中表象不明显)
    1.概念:当父类引用指向子类实例时,由于子类对父类函数进行了重写,导致我们在使用该引用去调用相应的方法显示出的不同。
    2.发生条件:1.必须有继承 2. 子类必须要对父类的方法进行重写
    eg:
    class Ren
    {
    public $name;
    public $sex;
    function Say()
    {
    echo "Hello";

    }
    }
    class China extends Ren
    {

    function Say()
    {

    echo "你好";
    }
    }
    $r=new Ren();//$r代表Ren的引用
    $r1=new China();//$r1代表China的引用

    二、函数重载:
    1.概念:同一个函数名重写多个功能,根据所写的参数不同加载不同的功能
    2.要求:1. 所写函数名一样 2. 参数的个数不同 3. 参数个数相同时,参数类型不同
    eg:
    class Ren
    {
    public $name;
    public $sex;
    function Say()
    {
    echo "Hello";

    }
    functin Say($a)
    {

    echo $a."Hello";
    }
    functin Say($a,$b)
    {
    echo $a.$b."Hello";
    }

    }
    $r=new Ren();
    //重载:
    $r->Say();
    $r->Say("a");
    $r->Say("aa","bb");

    附:php是弱类型语言,所以没有重载
    php里面有可变参数的函数

    三、__tostring()方法:
    可以输出类的一些描述,它是在直接输出对象引用时自动调用的方法
    class Ren
    {
    public $name;
    public $sex;
    function Say()
    {
    echo "Hello";
    }
    function __tostring()
    {
    echo "这个对象包含name和sex,一个Say方法";
    }
    }
    $r=new Ren();
    echo $r;
    若不使用__tostring()方法,输出$r会报错:
    Catchable fatal error: Object of class Ren could not be converted to string in C:AppServwwwUntitled-1.php on line 31
    使用__tostring()方法后,输出:这个对象包含name和sex,一个Say方法

    四、clone对象的克隆

    class Ren
    {
    public $name;
    public $sex;
    function Say()
    {
    echo "Hello";
    }
    function __clone() //克隆对象时自动执行
    {
    $this->name="李四";//这里的$this指复本,克隆出的新对象
    }
    }
    $r=new Ren();
    $r->name="张三";
    echo $r->name; //输出结果:张三
    $r1=clone $r;
    echo $r1->name; //输出结果:张三李四

  • 相关阅读:
    java实现机器人行走
    java实现机器人行走
    java实现机器人行走
    java实现机器人行走
    java实现机器人行走
    java实现购物券消费方案
    java实现购物券消费方案
    java实现购物券消费方案
    java实现购物券消费方案
    《技术垄断:文明向技术投降》
  • 原文地址:https://www.cnblogs.com/ds-3579/p/5454699.html
Copyright © 2020-2023  润新知