php之重写与重载
1 <?php 2 /*** 3 重写/覆盖 override 4 指:子类重写了父类的同名方法 5 6 重载 overload 7 指:存在多个同名方法,但参数类型或个数不同 8 传不同的参数,调用不同方法 9 但是在PHP中,不允许存在多个同名方法 10 因此,不能够完成java,c++的这种重载 11 12 但是,PHP的灵活,能达到类似的效果,用func_get_args() 13 ***/ 14 15 class Human { 16 public function say() { 17 echo '吃了吗'; 18 } 19 } 20 class Stu extends Human { 21 public function say() { 22 echo 'hello<br />'; 23 } 24 /* 25 public function say($a,$b,$c) {//报错,php中不能有重名方法Cannot redeclare Stu::say() 26 echo '哥仨好'; 27 } 28 */ 29 } 30 $ming = new Stu(); 31 $ming->say(); 32 $ming->say('lisi');//上面的这个过程叫重写 33 34 35 /** 36 *重载 37 */ 38 class Calc { 39 public function area(){ 40 $args = func_get_args();// 判断调用函数area时,得到的参数个数 41 if (count($args) == 1) {//如果传过来一个参数,代表圆 42 return 3.14 * $args[0] * $args[0];//计算圆的面积 43 }elseif (count($args) == 2) {//如果传过来2个参数,代表矩形 44 return $args[0] * $args[1];//计算矩形面积 45 }else { 46 return '未知图形'; 47 } 48 } 49 } 50 51 $calc = new Calc(); 52 echo $calc->area(10),'<br />';//圆形面积314 53 echo $calc->area(10,10);//矩形面积100 54 ?>