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扫码支付 模式二
下一篇:微信公众平台|模板消息群发功能