类的特性

上一节介绍了抽象类、匿名类、普通类等的基本特性和简单应用,这一节主要介绍类的特性。

类的属性

类的成员变量叫作属性,属性可声明为 privatepublicprotected 三种访问级别。

类的成员方法中,可以通过 “$this->” 访问非静态、非常量属性;通过 “self::” 来访问常量及静态属性。接下来逐步介绍各个属性的异同。

  1. 普通属性:普通属性指的是无 staticconst 声明的属性。普通属性通过 “->” 访问,类实例化成对象后,会把这些属性复制到对象中。

  2. 静态属性:静态属性指的是通过关键字 static 声明的属性,访问时通过 “::” 调用。

  3. 常量属性:常量属性指的是通过关键字 const 声明的属性,常量属性不能被修改,访问时通过 “::” 调用。

  4. 动态属性:动态属性指的是在程序运行中产生的属性,不是在类中声明的。如以下代码示例:

class D{
    public function set($param)
    {
        $this->b = $param ;              //设置动态属性
    }
}
$obj = new D();
$obj->set('param_str');
var_dump($obj->b);

访问控制

类中的访问控制是通过在方法和属性前面添加关键字 publicprotectedprivate 来实现的。

  • ① 在普通类、匿名类和 final 类中,方法及属性的访问控制声明不受限制,可设为 publicprotectedprivate 三者中的任意一个;

  • ② 在抽象类和接口中,方法及属性的访问控制不能被声明为 private

  • ③ 在特性类中,方法及属性的访问控制只能被声明为 public