public、protected、private权限控制的区别
发表时间: 2017-06-27 10:44:18 | 浏览次数:
|
|
public |
protected |
private |
| 当前类 |
√ |
√ |
√ |
| 子类 |
√ |
√ |
× |
| 外部 |
√ |
× |
× |
看看一下具体的代码分析:
class Humanity{
public $name = 'lrfun';
protected $height = '181cm';
private $weight = '70kg';
public function myName(){
echo '√ 本类调用-姓名:' . $this->name;
}
public function myHeight(){
echo '√ 本类调用-身高:' . $this->height;
}
public function myWeight(){
echo '√ 本类调用-体重:' . $this->weight;
}
}
// Man继承Humanity
class Man extends Humanity{
public function myName(){
echo '√ 子类调用-姓名:' . $this->name;
}
public function myHeight(){
echo '√ 本类调用-身高:' . $this->height;
}
public function myWeight(){
echo '× 本类调用-体重:' . $this->weight;
}
}
//public
$publicHumanity = new Humanity();
//本类调用 √
$publicHumanity->myName();
//子类调用 √
$publicMan = new Man();
$publicMan->myName();
//外部调用 √
echo '√ 外部调用-姓名:'.$publicHumanity->name;
// 输出结果:
// √ 本类调用-姓名:lrfun
// √ 子类调用-姓名:lrfun
// √ 外部调用-姓名:lrfun
//protected
$protectedHumanity = new Humanity();
//本类调用 √
$protectedHumanity->myHeight();
//子类调用 √
$protectedMan = new Man();
$protectedMan->myHeight();
//外部调用 ×
echo '× 外部调用-姓名:'.$protectedHumanity->height;
// 输出结果:
// √ 本类调用-身高:181cm
// √ 本类调用-身高:181cm
// Fatal error: Cannot access protected property Humanity::$height in .........
//private
$privateHumanity = new Humanity();
//本类调用 √
$privateHumanity->myWeight();
//子类调用 ×
$privateMan = new Man();
$privateMan->myWeight();
//外部调用 ×
echo '× 外部调用-体重:'.$privateHumanity->weight;
// 输出结果:
// √ 本类调用-体重:70kg
// Notice: Undefined property: Man::$weight in .........
// × 本类调用-体重:
// Fatal error: Cannot access private property Humanity::$weight in .........
上一篇:微信支付之Native扫码支付 模式二
下一篇:微信公众平台|模板消息群发功能