PHP中的访问修饰符
在 PHP 中,类的修饰符主要分为访问控制修饰符和类特性修饰符。以下是对这些修饰符的介绍,并结合示意图帮助理解。
1. 访问控制修饰符
访问控制修饰符用于控制类的属性和方法的访问权限,PHP 提供了三种访问控制修饰符:public、protected 和 private。
1.1 public(公有)
- 描述:可以在类的内部和外部访问。
- 示意图:
类内部:✔️
子类:✔️
类外部:✔️
1.2 protected(受保护)
- 描述:只能在类的内部和子类中访问,外部无法直接访问。
- 示意图:
类内部:✔️
子类:✔️
类外部:❌
1.3 private(私有)
- 描述:只能在类的内部访问,子类和外部都无法访问。
- 示意图:
类内部:✔️
子类:❌
类外部:❌
2. 类特性修饰符
除了访问控制修饰符,PHP 还提供了其他修饰符来定义类的特性。
2.1 static(静态)
- 描述:用于定义静态属性或方法。静态成员属于类本身,而不是类的实例,可以通过类名直接访问。
- 示意图:
类内部:✔️
子类:✔️
类外部:✔️(通过类名访问)
2.2 final(最终)
- 描述:用于定义不可被继承的类或不可被重写的类方法。
- 示意图:
类内部:✔️
子类:❌(final 类不能被继承,final 方法不能被重写)
类外部:✔️
示例代码
以下是一个简单的 PHP 类示例,展示不同修饰符的使用:
<?php
class MyClass
{
public $publicProperty = "Public Property";
protected $protectedProperty = "Protected Property";
private $privateProperty = "Private Property";
public function publicMethod()
{
echo "This is a public method.";
}
protected function protectedMethod()
{
echo "This is a protected method.";
}
private function privateMethod()
{
echo "This is a private method.";
}
}
class ChildClass extends MyClass
{
public function accessProtected()
{
echo $this->protectedProperty; // ✔️
$this->protectedMethod(); // ✔️
}
}
$myClass = new MyClass();
echo $myClass->publicProperty; // ✔️
$myClass->publicMethod(); // ✔️
// 以下代码会报错
// echo $myClass->protectedProperty; // ❌
// echo $myClass->privateProperty; // ❌
// $myClass->protectedMethod(); // ❌
// $myClass->privateMethod(); // ❌
?>
总结
通过访问控制修饰符,可以实现类的封装,保护类的内部数据和逻辑。而 static 和 final 等修饰符则提供了类的其他特性,例如静态访问和防止继承等。
浙公网安备 33010602011771号