php面向对象之封装
来源:互联网 发布:淘宝上比较好的女鞋店 编辑:程序博客网 时间:2024/05/16 01:09
面向对象三大特征:
封装 继承 多态
属性的封装
class Human { public $money = 1000;}$lisi = new Human();echo $lisi->money,'<br />'; // 1000// 变一下money$lisi->money = 500;echo $lisi->money,'<br />'; // 500
李四的钱,别人问他有多少钱,他就如实说.
别人把他的钱减少,立即减少了.
如果在现实生活中,这个现象显然不合理,我们需要把钱保护起来
public 是公共的,即大家都可以来读取,操作钱显然不应该是公共的
改进:
class Human { private $money = 1000; public function showMoney() { return $this->money * 0.8; }}$lisi = new Human();echo $lisi->money;//调用失败,因为money是私有和,这时,我们就把money "封起来"了//注意:光封起来,是没有意义的,因为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 />';}// 再借 2000 元$m = $lisi->send(2000);if($m) { echo '借了',$m,'元<br />'; echo '还剩下',$lisi->showMoney(),'元<br />'; echo '银行还有',$lisi->showBank(),'元,<br />';}
在上个例子中,
借钱者,只知道,借成功了,还是借失败了.
至于,如果借成功了,lisi是怎么样把钱凑齐的,借钱者不会知道lisi也许跑了趟银行,再把钱凑齐.
就像同学们,只需要 每周一到周五,晚8点到10点来听课.至于后面,老师的备课,拉网线,等等,你们不需要知道.
对于一个对象,对外界开放一个接口,调用接口时,内部进行的操作,不需要让外界知道.隐藏了内部的一些实现细节.这是对方法的封装.
生活中的封装很常见:电视机,开电源 一个动作
[隐藏的内部动作: 触发显像管,接线无线电信息,调频 等等]
洗衣机:扔衣服,通电.[自动加水,洗,漂,脱水]
0 0
- php面向对象之封装
- PHP面向对象之封装
- php面向对象编程之--封装
- 面向对象之封装
- 面向对象之封装
- 面向对象之封装
- 面向对象之封装
- 面向对象之封装
- 面向对象之封装
- 面向对象之封装
- 面向对象之封装
- 面向对象之封装
- php (十三) 面向对象 封装
- PHP面向对象特性-封装
- PHP面向对象的三大特性之封装性
- PHP面向对象的三大特性之封装性
- PHP面向对象三大特性之封装基础
- 第九节:面向对象之封装
- C++存储类别、类型修饰符、输入限定符
- 存储过程
- flex 点击按钮加载本地图片问题
- 强化学习和控制
- leetcode 383. Ransom Note
- php面向对象之封装
- Java
- JS实现动态生成表格并提交表格数据向后端
- 读书笔记(C++)——【泛型算法】
- C语言宏详解
- 判断一棵树是否为平衡二叉树
- HDU 1391 Number Steps
- Android官方开发文档Training系列课程中文版:后台服务之IntentService的创建
- Light OJ:1058Parallelogram Counting(几何数学+技巧排序)