zoukankan      html  css  js  c++  java
  • 类的三大特性——多态

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

    ?>
  • 相关阅读:
    Dropdown 下拉菜单
    Breadcrumb 面包屑
    Tabs 标签页
    NavMenu 导航菜单
    Notification 通知
    MessageBox 弹框
    Message 消息提示
    Loading 加载
    Alert 警告
    Badge 标记
  • 原文地址:https://www.cnblogs.com/nannan-0305/p/5443061.html
Copyright © 2011-2022 走看看