设计模式
封装
-
什么是封装?
- 用官方的话的说【封装就是划分一个抽象的诸多元素过程,这些元素构成该抽象的结构和行为,而封装的作用就是将抽象的契约接口与其实现分离】
-
现在我们来理解下?
-
首先封装是一种信息的隐藏
-
什么是信息隐藏呢?
- 举一个生活中的例子,像空调、汽车我们并不知道其原理与构造,但是类我们只需要知道一件事就够了,拿起遥控器和钥匙就用,没有啥花里胡哨的,我们并不需要知道细节是什么
-
- 然后封装的过程中会出现一些问题,我们的好奇心是很丰富的总想去了解其中的构造,但是以封装的东西而言并不想你去碰他,那么这就会产生一种妥协,于是我们封装的东西就会多出来一些东西,也就是特性,是不是有种死皮赖脸的感觉(´Д`)y-~
- 而对于编程而言,对象正是因为有了封装,对象才会成为一个对象
- 现在,当其他人访问这个的时候,我们可以给他们,满足他们好奇心的东西,让他们的好奇心得到满足,让他们只能通过适当的访问渠道来使用这个模块,而不能使用这个模块的细节,其中适当的访问渠道也就是我们常说的private[私有]、protected[保护]、public[公有]
-
Private【私有】举例:
<?php class informantion { private $age=24; private $sex; public function __construct() { $this->age = 'boy'; $this->privacy(); } private function privacy() { echo $this->age; } } 使用: $other=new information(); //输出 24
- 上述类中,实例化information(),__construct()将会初始化数据调用方法【__construct的使用请自行查阅官方文档】,在类只要使用$this【至于问啥用$this,别问我PHP规定的】,就可以访问$age的私有属性变量获得年龄,而以外部而言也就是$other,他只能看到privacy()输出的结果
- 就好比,女孩子嘛,你一看就是女孩子,但是嘞女孩子的年龄是隐私不会告诉你的,你也就只能看到她想告诉你的,她是个女的
-
Protected【保护】举例:
protected.php <?php abstract class YourWage { abstract protected function countMoney(); protected $wage; protected function setHourly($hourly) { $money = $hourly; return $money; } } access.php <?php include_once('./protected.php'); class access extends YourWage { protected $name="小明"; function __construct() { $this->countMoney(); } protected function countMoney() { $this->wage = "Your hourly wage is $"; echo $this->wage . $this->setHourly(36); } } $worker = new access(); 输出: Your hourly wage is 36
-
- 抽象类不能被实例化,且继承抽象类时需要实现其中的抽象方法
- protected,只能在继承类和本类中使用
- 上述话可能说的有点偏官方,其实嘞protected 就好像我们的工资是受保护的,其他人可能会在什么招聘信息什么公告上看到有多少钱,但是嘿嘿嘿看不到是谁又这么多钱,只有你的老板和你自己知道
-
public【公共】举例:
<?php class information { public $wage = "10000"; private $bank_password; private function property($data) { $this->bank_password = $data; if ($this->bank_password == "123456") { echo '哇!我太难了,没钱了!'; } } public function attract() { echo $this->wage; } } $worker = new information(); $worker->attract(); 输出: 10000
- 公共的顾名思义就是大家都可以用的,就好比你去相亲你会告诉别人你的工资多少,提升你的成功率避免见光死,虽然你的真实情况是我太难了!!!(;´д`)ゞ
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。