三种权限详解

之前接触了两种权限,分别是
public 公开的,类的内部外部均可调用。
protected 受保护的,只允许类的内部调用,外部无权调用。
有了继承,那权限在有继承出现以后,又会是什么样?

 public 公开的

 1 class Lyz{
 2  //手里有30万块钱,
 3   public $money = 3000000;
 4   
 5   //本类中调用这30万
 6   public function par(){
 7   echo $this->money,'<br>';
 8   }}class Erzi extends Lyz{
 9   public function sub(){
10   echo $this->money,'<br>';
11   } 
12 }$wo = new Erzi();
13 $wo->par(); //父类可以调用
14 $wo->sub(); //自己的也可以用

 protected 受保护的

 1 class Lyz{
 2  //父类的30万改为受保护的了。
 3  protected $money = 3000000;
 4  
 5  public function par(){
 6  echo $this->money,'<br>';
 7  }
 8 }
 9 class Erzi extends Lyz{
10  public function sub(){
11  echo $this->money,'<br>';
12  }
13  
14 }
15 $wo = new Erzi();
16 $wo->par(); //子类生成的对象直接调用父类的protected方法,没问题。
17 $wo->sub(); //子类生成的对象调用本类的方法,也可以使用父类受保护的30万。
18 $wo->money; //子类生成的对象在类外部直接调用这30万,不好意思,不行。

也就是说,protected受保护的,本类,子类内部均可使用,但外部直接调用则不可以。

 private 私有的

 1 class Lyz{
 2  //同样的代码,改为私有的30万
 3  private $money = 3000000;
 4  
 5  public function par(){
 6  echo $this->money,'<br>';
 7  }
 8 }
 9 class Erzi extends Lyz{
10  public function sub(){
11  echo $this->money,'<br>';
12  }
13  
14 }
15 $wo = new Erzi();
16 $wo->par(); //子类生成的对象直接调用父类的private方法,还是没问题。
17 $wo->sub(); //子类生成的对象调用本类的方法,无法使用父类私有的30万。
18 $wo->money; //同样方法调用。

也就是说,一旦一个类中出现private关键词,那么不管是属性还是方法,只能在本类中使用,继承
和外部均无法调用。

猜你喜欢

转载自www.cnblogs.com/zhony/p/10246499.html
今日推荐