PHP面向对象-访问控制

热点 | 2023-04-28 15:30:11
时间:2023-04-28 15:30:11   /   来源: 腾讯云      /   点击数:()


(资料图)

public访问控制

public访问控制是最常用的一种,它表示对象属性和方法可以在任何地方访问,包括类的外部。例如:

phpCopy codeclass Person {    public $name;    public function greet() {        echo "Hello, my name is " . $this->name;    }}$person = new Person();$person->name = "John";$person->greet(); // 输出 "Hello, my name is John"

在上面的示例中,$name属性和greet()方法都被声明为public,因此可以从类的外部访问。在创建新的Person对象后,可以使用$person->name属性设置$name属性的值,并调用$person->greet()方法输出相应的消息。

private访问控制

private访问控制表示对象属性和方法只能在类内部访问。这意味着,在类的外部无法直接访问或修改私有属性或方法。例如:

class Person {    private $name;    public function setName($name) {        $this->name = $name;    }    public function greet() {        echo "Hello, my name is " . $this->name;    }}$person = new Person();$person->setName("John"); // 正确$person->greet(); // 报错,因为$name是私有属性,无法从外部访问

在上面的示例中,$name属性被声明为private,因此无法从类的外部直接访问。相反,可以通过一个名为setName()的public方法来设置$name属性的值,并通过$person->greet()方法输出相应的消息。

protected访问控制

protected访问控制表示对象属性和方法只能在类内部和其子类中访问。这意味着,类的外部无法直接访问或修改受保护的属性或方法。例如:

class Person {    protected $name;    public function setName($name) {        $this->name = $name;    }}class Employee extends Person {    public function greet() {        echo "Hello, my name is " . $this->name;    }}$employee = new Employee();$employee->setName("John"); // 正确$employee->greet(); // 输出 "Hello, my name is John"

在上面的示例中,$name属性被声明为protected,因此无法从类的外部直接访问。相反,可以通过一个名为setName()的public方法来设置$name属性的值,并通过Employee类中的greet()方法输出相应的消息。由于Employee类是Person类的子类,因此可以在子类中访问protected属性。

标签:

最近更新