PHP面向对象 —— 7 封装概念

本文通过实例介绍了面向对象编程中封装的概念及其应用。演示了如何将类的属性设置为私有,并提供公共方法来操作这些属性,以此实现对外部的封装。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
面向对象三大特征:
封装 继承 多态
*/



// =代码部分1=

class Human {
	public $money = 1000;
}
	
$lisi = new Human();
echo $lisi->money,'<br >'; //1000

// 改变一下money
$lisi->money = 500;
echo $lisi->money,'<br >'; //500

/*
然而在现实中,别人把你的钱减少了,显然是不合理的
所以我们要把钱设为私有的
*/



// =代码部分2=

class Human {
	private $money = 1000;
	
	public function showMoney() {
		return $this->money * 0.8;
	}
}

$lisi = new Human();


/*
此时我们再调用或调用更改money时就会失败,
因为我们把money“封起来”了
//echo $lisi->money,'<br >'; //1000

但是,我们不能光封起来,还要能够使用才行
*/



/*
我们不能直接翻别人口袋有多少钱
但可以问别人,但是别人说的不一定是真的
*/
echo $lisi->showMoney(); //800

/*
把某些重要属性 封装起来 然后通过一个开放的接口来操作.
这就实现对属性的封装.
*/



// =代码部分3=

// 封装在方法上的体现
class Human {
	private $money = 1000;
	private $bank = 2000;
	
	private function getBank($num) {
		$this->bank -= $num;
		
		return $num;
	}
	
	public function send($much) {
		if($much <= 1000) {
			$this->money -= $much;
			return $much;
		} else if($much <= $this->money + $this->bank) {
			$num = $much - $this->money; 
			//计算从银行取了多少钱
			$this->money += $this->getBank($num);
			//从银行取出钱,加到现金里
			
			$this->money -= $much;
			//再把钱借给朋友
			return $much;
		} else { 
		    $this->money -= $much;
			return $much;		
		//最后若实在借不了这么多的话返回false
			//return false;
		}
	}
	
	public function showMoney() {
		return $this->money;
	}
	
	public function showBank() {
		return $this->bank;
	}
}

$lisi = new Human();

$m = $lisi->send(300);

if($m) {
	echo '借了',$m,'元<br >';
	echo '还剩下',$lisi->showMoney(),'元<br >';
}

// 再借2000元

$m = $lisi->send(2000);
if($m) {
	echo '借了',$m,'元<br >';
	echo '还剩下',$lisi->showMoney(),'元<br >';
	echo '银行还有',$lisi->showBank(),'元<br >';
}

/*
对于一个对象,对外界开放一个接口,
调用接口时,内部进行的操作,不需要让外界知道.
隐藏了内部的一些实现细节.

这是对方法的封装.
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烟敛寒林o

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值