版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29920751/article/details/87707541
PHP中有三种访问修饰符,分别是:
- public(公有的):在类的外部,类本部和子类中都可以访问
- private(私有的):只能在类中访问,子类和类的外部都不能访问
- protected(受保护的):在类本部、子类中可以访问,在类的外部不能访问
它们可以用在类的属性和方法上,用来修饰类成员的访问权限,类的属性和方法统称为类的成员。
1.public(公有的)
在PHP5中如果类没有指定成员的访问修饰符,默认就是public的访问权限。
/*
以下两个方法声明访问权限效果相同
*/
function test(){
#code
};
publilc function test(){
#code
};
-
当类的成员被声明为public的访问修饰符时,该成员能被外部代码访问和操作。
2.private(私有的)
protected $age = '20'; // 受保护的权限
被定义为private的成员,对于类内部所有成员都可见,没有访问限制。对类外部不允许访问。
3.protected(受保护的)
被声明为protected的成员,只允许该类的子类进行访问
访问权限 |
public |
protected |
private |
所有 |
★ |
||
子类 |
★ |
★ |
|
类内 |
★ |
★ |
★ |
以下面的例子总结:
<?php
class Student{
public $name = 'alias'; //公共的访问权限
protected $age = '20'; // 受保护的权限
private $money = '8000'; // 私有的访问权限
// 公有方法
public function getUserInfo(){
echo $this->name;
echo $this->age;
echo $this->money;
}
// 私有方法
private function getUserMsg(){
echo "This is test";
}
}
$student = new Student();
echo $this->name; // 公共属性可以访问
echo $this->age; // 受保护属性,报致命错误
echo $this->money; // 私有属性,找不到属性
$this->getUserMsg(); //可以打印三个属性的信息,因为getUserMsg是公有方法
// 子类继承父类的属性和方法
class Test extends Student{
// 子类重写父类的public、protected属性的方法,但是不能重新定义private属性的方法
protected $age = 25; // 从新定义年龄
public function rewriteParent(){
echo $this->name;
echo $this->age;
echo $this->money; // 私有属性,找不到属性
}
}
$test = new Test();
echo $this->name; // 公共属性可以访问
echo $this->age; // 受保护属性,报致命错误
echo $this->money; // 私有属性,找不到属性
$test->rewriteParent(); // 显示$name,$age,找不到$money属性;
推荐教程: