1. 程式人生 > >php 關鍵詞final,static的用法 順便也說下php中->跟::的區別 做個筆記

php 關鍵詞final,static的用法 順便也說下php中->跟::的區別 做個筆記

一.
final 的用法很簡單,定義類的時候 就是阻止子類繼承
貼程式碼

final class base{
	public function test(){
		echo 'this is final';
	}
}

任何類都不能繼承base類,如果繼承就會丟擲錯誤

定義方法的時候就是阻止被覆蓋

class base{
	final public function test(){
		echo 'this is final';
	}
}

class son extends base{
	public function test(){
		echo 'this is son test';
	}
}

test方法在base類中已經被final修飾 所以在son類中定義test方法就會丟擲異常
Fatal error: Cannot override final method base::test() in E:\wamp\www\class\base.php on line 12

注意:final只能用來修飾類或者方法

二.static的用法
static可以不用例項化類 就直接能通過類名呼叫

class base{
	public static $test1='TEST1';
	public static function test(){
		echo 'this is static';
	}
}
echo base::$test1;//可以直接通過類名來呼叫base類中的屬性
base::test();

不加static的使用

class base{
	public  $test1='TEST1';
	public  function test(){
		echo 'this is not static';
	}
}

$base=new base();//必須先例項化類 才能通過物件呼叫base類中的屬性
echo $base->test1;
$base->test();

三.通過static的例子,大家可能已經看出了->與::的區別了
在類裡面的時候兩種是沒有多大區別的
在類外面呼叫的時候
->必須是物件才能呼叫
::是類名進行呼叫

歡迎大家留言討論 共同進步