动态绑定的好处
<?php
class User //用户
{
protected function isAuthorized() //是否是验证用户
{
return(FALSE);
}
public function getName() //获得名字
{
return($this->name);
}
public function deleteUser($username) //删除用户
{
if(!$this->isAuthorized())
{
print("You are not authorized.\n");
return(FALSE);
}
//delete the user
print("User deleted.\n");
}
}
class AuthorizedUser extends User //认证用户
{
protected function isAuthorized() //覆写 isAuthorized()
{
return(TRUE);
}
}
$user = new User;
$admin = new AuthorizedUser;
//not authorized
$user->deleteUser("Zeev");
//authorized
$admin->deleteUser("Zeev");
?>
为什么 private 的类成员模拟静态绑定? 为了回答这个问题, 你需要回忆一下为什么需要有
private 成员.什么时候用它们来代替 protected 成员是有意义的?
private 成员只有当你不想让子类继承改变或特殊化父类的行为时才用到. 这种情况比你想
像的要少. 通常来说,一个好的对象分层结构应当允许绝大多数功能被子类特殊化,改进,或
改变?这是面向对象编程的基础之一. 一定的情况下需要 private 方法或变量,例如当你确信
你不想允许子类改变父类中的某个特定的部份.