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); 
  • 相关阅读:
    *Binary Tree Inorder Traversal
    First Unique Character in a String
    回溯法模板
    *Linked List Random Node
    *Odd Even Linked List
    *Maximum Product of Word Lengths
    Flatten 2D Vector
    Docker (dockerfile)
    Docker数据卷
    Docker入门
  • 原文地址:https://www.cnblogs.com/laijinquan/p/7231092.html
Copyright © 2011-2022 走看看