面向对象三大特征: 封装 继承 多态
属性的封装
class Human {
public $money =
1000;
}
$lisi =
new Human();
echo $lisi->money,
'<br />';
$lisi->money =
500;
echo $lisi->money,
'<br />';
李四的钱,别人问他有多少钱,他就如实说. 别人把他的钱减少,立即减少了.
如果在现实生活中,这个现象显然不合理,我们需要把钱保护起来
public 是公共的,即大家都可以来读取,操作钱显然不应该是公共的
改进:
class Human {
private $money =
1000;
public function showMoney() {
return $this->money *
0.8;
}
}
$lisi =
new Human();
echo $lisi->money;
echo $lisi->showMoney();
方法的封装
class Human {
private $money =
1000;
private $bank =
2000;
private function getBank($num) {
$this->bank -=
$num;
return $num;
}
public function send($much) {
if(
$much >
$this->money +
$this->bank) {
return false;
}
else if(
$much >
$this->money){
$num =
$much -
$this->money;
$this->money +=
$this->getBank(
$num);
$this->money -=
$much;
return $much;
}
else {
$this->money -=
$much;
return $much;
}
}
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 />';
}
$m =
$lisi->send(
2000);
if(
$m) {
echo '借了',
$m,
'元<br />';
echo '还剩下',
$lisi->showMoney(),
'元<br />';
echo '银行还有',
$lisi->showBank(),
'元,<br />';
}
在上个例子中, 借钱者,只知道,借成功了,还是借失败了.
至于,如果借成功了,lisi是怎么样把钱凑齐的,借钱者不会知道lisi也许跑了趟银行,再把钱凑齐.
就像同学们,只需要 每周一到周五,晚8点到10点来听课.至于后面,老师的备课,拉网线,等等,你们不需要知道.
对于一个对象,对外界开放一个接口,调用接口时,内部进行的操作,不需要让外界知道.隐藏了内部的一些实现细节.这是对方法的封装.
生活中的封装很常见:电视机,开电源 一个动作 [隐藏的内部动作: 触发显像管,接线无线电信息,调频 等等] 洗衣机:扔衣服,通电.[自动加水,洗,漂,脱水]
转载请注明原文地址: https://ju.6miu.com/read-1300315.html