受保护的属性
受保护的属性可以在类的内部和子类中被访问和修改,但不能在外部直接访问和修改。在类的定义中,使用protected
关键字来定义受保护的属性。例如,下面的代码定义了一个Person
类,其中包含一个受保护的属性$email
class Person {
protected $email;
}
由于受保护的属性不能在外部直接访问,因此我们需要使用方法来访问和修改它的值。例如,我们可以定义一个setEmail()
方法来设置邮箱,以及一个getEmail()
方法来获取邮箱:
class Person {
protected $email;
public function setEmail($email) {
$this->email = $email;
}
public function getEmail() {
return $this->email;
}
}
class Student extends Person {
public function showEmail() {
echo $this->email;
}
}
$p1 = new Person();
$p1->setEmail("alice@example.com");
$s1 = new Student();
$s1->setEmail("bob@example.com");
echo $p1->getEmail(); // 输出:alice@example.com
echo $s1->getEmail(); // 输出:bob@example.com
$s1->showEmail(); // 输出:bob@example.com
在上面的代码中,我们定义了一个Person
类和一个Student
类。在Person
类中,我们定义了一个受保护的属性$email
,以及一个setEmail()
方法和一个getEmail()
方法。在Student
类中,我们定义了一个showEmail()
方法,用于展示受保护的属性$email
。然后,我们创建了一个Person
对象和一个Student
对象,并使用setEmail()
方法来设置它们的邮箱。在外部,我们可以通过getEmail()
方法来获取它们的邮箱。在Student
类中,我们使用$this->email
来访问受保护的属性$email
,并通过showEmail()
方法来展示它。