后期绑定/延迟绑定 */ header("Content-Type:text/html; charset=utf-8"); class Human{ public static function whoami(){ echo '来自父类的whoami在执行<br />'; } public static function say(){ self::whoami(); //子类内没有say方法,找到父类这里 self是指父类 } public static function say2(){ static::whoami(); //子类也没有say2方法,又找到父类这里 //但是父类用static::whoami //指调用你子类自己的whoami方法 } } class Stu{ public static function whoami(){ echo '来自子类的whoami在执行<br />'; } } Stu::say(); Stu::say2(); ?>
class Human{ public function say($name){ echo $name, '吃了吗?<br />'; } } class Stu extends Human{ public function say(){ echo 'Yo Yo 切克闹!<br />'; //上面这个过程叫重写override } } $ming = new Stu(); $ming->say(); $ming->say('张三'); /* 可以灵活的模拟像Java中的函数重载的效果 */ class Calc{ public function area(){ //判断一个调用area时,得到的参数个数 $args = func_get_args(); if(count($args) == 1){ return 3.14 * $args[0]; }else if(count($args) == 2){ return $args[0] * $args[1];
* * 重载/ overloaded */ header('Content-type:text/html;charset=utf-8'); /** * 重写例子 */ class Human { public function say() { echo '吃了吗'; } } class Stu extends Human { public function say() { echo 'hello'; } // public function say($a,$b,$c) { // echo '哥三好'; // } public function oldSay() { parent::say(); } } $s = new Stu(); $s->say();