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