1. final

在 PHP5 中新增加了 final 关键字,它只能用来修饰类和方法,可以对类的继承、方法的重写进行控制。

下面的代码会报错,因为被 final 修饰的类不能被其它类继承。

final class demo {  
  public function demoFunc () {
    echo "hello world";
  }
}

class demo1 extends demo {  
}

若一个类中的方法用 final 修饰,则在继承该类的类中不能再对此方法重写。

2. static

用于修饰类的成员属性和成员方法,即静态属性和静态方法。

类的静态成员和方法无需实例化(new)就可以直接通过类名访问。格式:类名::$静态属性 类名::静态方法

在类内部的方法中,不能用 this 来引用静态方法和属性,需要用 self 来引用。格式:self::$静态属性 self::静态方法

class demo {  
  static public $demoStr = "Hello World";
  static public function demoFunc () {
    return self::$demoStr;
  }
}

echo demo::$demoStr;  
echo demo::demoFunc();  

其中的 self::$demoStr 就相当于 demo::$demoStr,但不要这么写,因为会导致代码的维护成本上升。

3. public, protected, private

对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。被定义为公有的类成员可以在任何地方被访问。被定义为受保护的类成员则可以被其自身以及其子类和父类访问。被定义为私有的类成员则只能被其定义所在的类访问。

类属性必须定义为公有,受保护,私有之一。如果用 var 定义,则被视为公有。

类中的方法可以被定义为公有,私有或受保护。如果没有设置这些关键字,则该方法默认为公有。