专注于WEB技术的IT博客

php面向对象的访问类型控制

时间:2013-04-07分类: php浏览:4852
分享到:

public、protected、private这三个修饰符是php5开始引入的访问控制机制,通过使用修饰符开发人员可    以对类中成员的访问进行限制。从字面上看,这三个修饰符翻译成汉语分别是,公有的(public)、受保护    的(protected)、私有的(private)。下面将通符代码实例来看看public、protected、private对类中成员    是如何限制的。


公有的访问修饰符public

public修饰符对类中的成员没有访问限制,所有的外部成员都可以访问这个类中的成员。

<?php
class myclass{
public $public_property;
  function __construct(){
$this ->public_property= 'public_property';
}
public function public_fun(){
    echo $this-> public_property;
}
}
$myclass= new myclass();
echo $myclass->public_property;//public,外部可以访问
$myclass->public_fun(); //内部可以访问


保护的访问修饰符 protected

被protected修饰的成员,对于该类的子类以及子类的子类都有访问权限,可以进行属性、方法的读及写    操作。但不能被该类的外部代码访问,以及该子类的外部代码也不具有访问其属性和方法的权限。

<?php
class myclass{
  protected $protected_property;
                                              
  function __construct(){
     $this-> protected_property= 'protected_property' ;
}
protected function protected_fun(){
    echo $this-> protected_property;
}
}
class myclass2 extends myclass{
       function call_protected_fun(){
             echo $this ->protected_property.'<br>' ;//访问父类中受保护的属性
             $this ->protected_fun().'<br>' ;//访问父类中受保护的方法
                                                         
      }
}
$myclass2= new myclass2();
$myclass2->call_protected_fun(); //调用子类对象中的方法实现对父类保护的成员访问
echo $myclass2->protected_property;//试图在代码外部访问父类中被保护的成员属性,结果出错
$myclass2->protected_fun(); //试图在代码外部访问父类中被保护的成员方法,结果出错


私有的访问修饰符private

类中的成员被private修饰时,在同一个中的所有成员都没有访问限制,但对于该类的外部代码是不允许    访问或者改变。对该类的子类也不能访问被private修饰的成员。

<?php
class myclass{
  private $private_property ;
                                      
  function __construct(){
     $this-> private_property = 'private_property' ;
}
private function private_fun(){
    echo $this-> private_property ;
}
}
class myclass2 extends myclass{
       function call_private_fun(){
             echo $this ->private_property .'<br>' ;
             $this ->private_fun().'<br>' ;
                                                 
      }
}
$myclass2= new myclass2();
$myclass2->call_private_fun();
echo $myclass2->private_property ;
$myclass2->private_fun();

上面的代码中,声明了一个myclass类,在类中声明了一个私有属性和一个私有方法,子类myclass2继承    了父类myclass的私有属性和私有方法,但是子类只能继承,却不能访问,所以不管上在子类的代码内部    还是外部访问都出错。


 


猜你喜欢
php面向对象之__autoload()
php面向对象之__call处理错误调用
php面向对象之__toString()
PHP面向对象之const常量修饰符
php面向对象之final的应用
php面向对象之克隆对象
PHP面向对象之对象和引用
php面向对象之类的静态成员
php面向对象之子类中重载父类的方法
php面向对象编程之类的继承性
标签 : php 面向对象
除非注明,本文首发网志博客,欢迎转载!转载请注明本文地址:http://w3note.com/web/99.html,谢谢。
  • 评论
  • 赞助本站