之前接触了两种权限,分别是
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关键词,那么不管是属性还是方法,只能在本类中使用,继承
和外部均无法调用。