• 0503 多态性,函数克隆


    一、三大特性之三 多态性(在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; //输出结果:张三李四

  • 相关阅读:
    PDF太大怎么办?缩小PDF的4种常用方法
    电脑插上网线无法连接网络完美解决方案
    HTTP攻击与防范-跨站攻击-01简介
    HTTP攻击与防范-跨网站脚本攻击
    HTTP攻击与防范-PHP客户端脚本攻击
    HTTP攻击与防护-函数注入攻击
    HTTP攻击与防范-命令注入攻击
    重置NSX防火墙策略
    NBU8.1安装
    Vcenter由Win2008r2迁移到linux
  • 原文地址:https://www.cnblogs.com/wcc731546227/p/5454775.html
Copyright © 2020-2023  润新知