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的例子,大家可能已经看出了->与::的区别了
在类里面的时候两种是没有多大区别的
在类外面调用的时候
->必须是对象才能调用
::是类名进行调用

欢迎大家留言讨论 共同进步

猜你喜欢

转载自blog.csdn.net/qq_36899235/article/details/84139428