
①公有的访问修饰符public
使用这种修饰符则类中的成员将没有访问限制,所有的外部成员都可以访问这个类中的成员,在PHP5之前的所有版本中,PHP中类的成员都是public的。
②私有的访问修饰符private
当类中的成员被定义为private,对于同一个类里所有成员都没有访问限制,但对于该类的外部代码是不允许改变甚至操作的,对于该类的子类,也不能访问private修饰的成员。代码如下所示:
<?php
//声明一个类作为父类使用,将它的成员都声明为私有的
class MyClass {
private $var1=100;
private function printHello(){
echo "hello<br>";
}
}
//声明一个Myclass类的子类师徒访问父类中的私有成员
class MyClass2 extends MyClass{
function useProperty(){
echo "输出从父类继承过来的成员属性值".$this ->var1."<br>";
$this ->printHello();
}
}
$subObj = new MyClass2();
$subObj -> useProperty(); //调用子类对象中的方法实现对父类私有成员的访问
?>
在上面的代码中声明了一个类MyClass,在类中声明了一个私有的成员属性和一个私有的,又声明了一个类MyClass2继承类MyClass,并在子类MyClass2中访问父类中的私有成员。但父类中的私有成员只能在它的本类中使用,所以访问出错。
③保护的访问修饰符protected
被修饰为protected的成员,对于该类的子类及子类的子类都有访问权限,可以进行属性、方法的读写操作。但不能被该类的外部代码访问,该子类的外部代码也不具有方额外呢其的权限。将上例中父类的访问权限改为protected修饰,就可以在子类中访问父类中的成员了,但在类的外部也是不能访问的,所以也可以完成对对象的封装的目的。代码如下所示:
<?php
class MyClass {
protected $var1=100;
protected function printHello(){
echo "hello<br>";
}
}
//声明一个Myclass类的子类师徒访问父类中的保护成员
class MyClass2 extends MyClass{
function useProperty(){
echo "输出从父类继承过来的成员属性值".$this ->var1."<br>";
$this ->printHello();
}
}
$subObj = new MyClass2();
$subObj -> useProperty(); //调用子类对象中的方法实现对父类私有成员的访问
echo $subObj ->var1; //试图访问类中受保护的成员,结果出错
?>在上例中,将类MyClass中的成员使用protected修饰符设置为保护的,就可以在子类中直接访问。但在子类外部去访问protected修饰的成员则出错。
| 欢迎光临 一起源码网 (https://www.171739.xyz/) | Powered by Discuz! X3.3 |