访问控制(可见性)
对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。
被定义为 公有的类成员 可以在任何地方被访问。
被定义为 受保护的类成员 则可以被其自身以及其子类和父类访问。
被定义为 私有的类成员 则只能被其定义所在的类访问
| 位置 |
private |
protected |
public |
| 本类内 |
Y |
Y |
Y |
| 子类内 |
N |
Y |
Y |
| 外部 |
N |
N |
Y |
| 能否重新定义 |
N |
Y |
Y |
属性的访问控制
类属性必须定义为公有,受保护,私有之一。
如果用 var 定义,则被视为公有
方法的访问控制
类中的方法可以被定义为公有,私有或受保护。
如果没有设置这些关键字,则该方法默认为公有
Example #1 属性声明
<?php
class MyClass
{
public $public = 'Public';
protected $protected = 'Protected';
private $private = 'Private';
function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}
$obj = new MyClass();
echo $obj->public;
echo $obj->protected;
echo $obj->private;
$obj->printHello();
class MyClass2 extends MyClass
{
protected $protected = 'Protected2';
function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}
$obj2 = new MyClass2();
echo $obj2->public;
echo $obj2->private;
echo $obj2->protected;
$obj2->printHello();
?>
|