示例#1
0
后期绑定/延迟绑定
*/
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];
示例#3
0
文件: 02.php 项目: neilchou/phpbase
 * 
 * 重载/ 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();