下面是关于“php面向对象全攻略(九)访问类型”的完整攻略:
一、什么是访问类型?
在 PHP 面向对象编程中,访问类型(Access Modifiers)是用来控制类成员(属性和方法)被访问的级别。PHP 支持 3 种不同的访问类型:
- public(公共的):公共成员可以在类的内部和外部进行访问。
- protected(受保护的):受保护成员只能在该类和其子类中进行访问。
- private(私有的):私有成员只能在该类中进行访问。
二、如何使用访问类型?
访问类型可以通过在类成员前面添加相应的关键字来使用。例如,如果我们想要将一个属性设置为受保护的,我们可以在属性前加上 protected
关键字:
class Person {
protected $name;
}
同样地,如果我们想要将一个方法设置为私有的,我们可以在方法前加上 private
关键字:
class Person {
private function getAge() {
return $this->age;
}
}
三、访问类型示例
下面是两个访问类型的示例,分别用于演示受保护和私有成员的访问控制级别:
1. 受保护成员示例
class Person {
protected $name;
protected function getInfo() {
return $this->name . " is a person.";
}
}
class Student extends Person {
public function __construct($name) {
$this->name = $name;
}
public function studentInfo() {
return $this->getInfo();
}
}
$stu = new Student('Tom');
echo $stu->studentInfo();
在上面的示例中,Person
类中的 $name
属性和 getInfo()
方法都被标记为受保护的,并且 Student
类继承了 Person
类。在 Student
类中,我们可以在构造函数中设置 $name
属性,因为 $name
属性被标记为受保护的,所以子类可以访问。studentInfo()
方法调用了 getInfo()
方法,但 getInfo()
方法也被标记为受保护的,但它仍然可以被子类调用。
2. 私有成员示例
class Person {
private $name;
private function getInfo() {
return $this->name . " is a person.";
}
public function getPerInfo() {
return $this->getInfo();
}
}
class Student extends Person {
public function __construct($name) {
$this->name = $name;
}
}
$stu = new Student('Tom');
echo $stu->getPerInfo();
在上面的示例中,Person
类中的 $name
属性和 getInfo()
方法都被标记为私有的。在 Person
类中,我们定义了一个 getPerInfo()
公共方法,该方法调用了私有的 getInfo()
方法。在 Student
类中,我们创建了一个新的 Student
实例并将其 $name
属性设置为 'Tom'
。我们尝试访问 $stu->getPerInfo()
方法,由于该方法访问了 $name
属性和 getInfo()
方法,因此会抛出错误。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php面向对象全攻略 (九)访问类型 - Python技术站