zoukankan      html  css  js  c++  java
  • PHP面向对象之重写与重载

    /***  
    ====笔记部分====  
    重写/覆盖  override  
    指:子类重写了父类的同名方法  
    重载: overload  
    重载是指:存在多个同名方法,但参数类型/个数不同.  
    传不同的参数,调用不同的方法  
    但是在PHP中,不允许存在多个同名方法.  
    因此,不能够完成java,c++中的这种重载  
    但是,PHP的灵活,能达到类似的效果  
    ***/   
    /****  
    代码部分  
    ****/   
      
    class human{  
      public function say($name){  
       echo $name,' 吃了吗?<br />';  
      }  
    }  
      
    class stu extends human{  
      
      public function say(){  
       echo '切克闹,卡猫百比<br />';  
      }  
      /* 
      public function say($a,$b,$c){ 
       echo '哥仨好'; 
      } 
      报错: 
      Fatal error: Cannot redeclare stu::say() in D:wampwwwphp61.php on line 28 
      在PHP中,不允许存在多个同名方法,没有重载概念这一说。 
      */  
    }  
      
    $li=new stu();  
    $li->say();  
    $li->say('binghui');// 上面这个过程叫重写override!   
    /* 
    结果: 
    切克闹,卡猫百比 
    切克闹,卡猫百比 
    */  
      
      
    //在PHP中模拟重载的方法  
    class Calc {   
        public function area() {   
            // 判断一个调用area时,得到的参数个数   
            $args = func_get_args();   
            if(count($args) == 1) {   
                return 3.14 * $args[0] * $args[0];   
            } else if(count($args) == 2) {   
                return $args[0] * $args[1];   
            } else {   
                return '未知图形';   
            }   
        }   
    }   
    $calc = new Calc();   
    // 计算圆的页面   
    echo $calc->area(10),'<br />';   
    // 计算矩形的面积   
    echo $calc->area(5,8); 
  • 相关阅读:
    首位相连数组求最大子数组的和
    第四周学习进度报告
    求二维数组中子数组的最大值
    第三周学习进度总结
    数组从文件读取判断子数组的最大值
    CI项目设计Redis队列
    list
    zset
    NodeJS框架一览
    nginx虚拟主机配置
  • 原文地址:https://www.cnblogs.com/laijinquan/p/7231092.html
Copyright © 2011-2022 走看看