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 ?>

 

posted @ 2015-07-24 12:09  museluo  阅读(549)  评论(0编辑  收藏  举报