面向对象设计 4 —— PHP5面向对象进阶(属性的访问控制)


<?
//访问控制
//在PHP5中,可以在类的属性和方法前面加上一个修饰符(modifier),
//来对类进行一些访问上的控制。
/**
* 修饰符 同一个类中 子类中 全局
* private Yes
* protected Yes Yes
* public Yes Yes Yes(默认)
*
* Private的访问权限
* private 不能直接被外部调用,只能由当前对象调用。
* 前面介绍过关于封装的内容.这里不再重复。
* 比如你可以借钱给别人,但不希望别人知道你钱包里面有多少钱。
* 我们把它用private隐藏起来。
*/

class You{
private $youMoney = 1000;
//借出钱的方法
public function loan($number){
if($this->youMoney >= $number){
$this->youMoney = $this->youMoney - $number;
echo "好,这里借给你 $number 元<br>";
}else{
echo "我无法借给你 $number ,我没有那么多钱<br>";
}
}
}
$you = new You();
$you->loan(300);
$you->loan(600);
$you->loan(500);

echo $you->youMoney;//会出异常,私有变量不能被外界访问
?>



<?
//protected 修饰的属性和方法只能被子类调用。外界无法调用。
class You{
protected $youMoney = 1000;
//借出钱的方法
public function loan($number){
if($this->youMoney >= $number){
$this->youMoney = $this->youMoney - $number;
echo "好,这里借给你 $number 元<br>";
}else{
echo "我无法借给你 $number ,我没有那么多钱<br>";
}
}
}

class YouSelf extends You{
public function getMoney(){
return $this->youMoney;
}
}

$youSelf = new YouSelf();
$youSelf->loan(900);//借钱

echo "老婆,我这里还有 ".$youSelf->getMoney()."元";

//echo youSelf->youMoney;//出现异常,变量不能被外界访问
?>



<?
//Public 修饰的属性和方法,可以被无限制的调用。
class You{
public $youMoney = 1000;
//借出钱的方法
public function loan($number){
if($this->youMoney >= $number){
$this->youMoney = $this->youMoney - $number;
echo "好,这里借给你 $number 元<br>";
}else{
echo "我无法借给你 $number ,我没有那么多钱<br>";
}
}
}

$you = new You();
//不用借钱,可以直接拿了
$you->youMoney = $you->youMoney - 5000;
echo "我现在只有".$you->youMoney;
echo "<br>钱那里去了我也不知道";
//数据危险,所以要通过封装保护数据安全
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值