基本介绍 OOP编程中三大特性: 封装性,继承,多态,说明一下,在php 面向对象中,多态提的不多,因为php 天生就很多态。
抽象:
在面向对象编程中,将一类事物的共有属性(成员属性)和行为(成员方法)提取出来。形成一个模板(类),这种解决问题的方法就是抽象。
代码写的有点问题 后面修改
<?php header("content-type:text/html;charset=utf-8"); /** * 共有属性 * 财号号码,密码, * 余额 * * 共有行为 * 存款,取款 * * 查询,转账 */ class Account{ public $accountNo; private $pwd; protected $accountname; private $balance; private $arr = array( 0=> array( "accountNo"=>666666, "pwd"=> 123456, "accountname"=>"张三", "balance"=> 1000000 ), 1=> array( "accountNo"=>777777, "pwd"=> 123456, "accountname"=>"李四", "balance"=> 1000000 ) ); // 构造函数 public function __construct($accountNo,$pwd,$accountname,$balance){ $this->accountNo=$accountNo; $this->pwd = $pwd; $this->accountname = $accountname; $this->balance = $balance; } // 输入密码 public function sendPwd($accountNo,$pwd){ $getUserInfo = null; foreach($this->arr as $k=>$v){ foreach($v as $index=>$value){ if($index == "accountNo"&&$value==$accountNo){ $getUserInfo = $v; break; } } } if(empty($getUserInfo)){ echo "输入账户不存在"; return false; }else{ if($getUserInfo['pwd'] == $pwd){ echo "密码输入正确"; return true; }else{ echo "密码输入错误"; return false; } } } // 取钱存钱 取钱传1,存钱传2 public function useMoney ($accountNo,$pwd,$money,$status){ if(!$this->sendPwd($accountNo,$pwd)){ return false; } $status = $status>1 ? $status : -$status; $this->balance = $this->balance + $money; echo "<pre>"; echo $this->balance; } } $user = new Account(777777,123456,"zhangsan",10000000); $user->useMoney(777777,123456,100,1);
2.封装的基本概念
封装就是把抽象出的数据和对数据操作封装在一起,数据是保护在了内部,程序的其他知识部分只能通过授权的操作(成员方法),才能对数据进行操作;
3.封装的具体实现-
访问控制符
说明: 在php 中提供三种访问控制符 public.protected和private,访问控制机的是public>protected>private. 具体看图:
public protected private 类外部 是 继承类 是 是 本类 是 是 是
public 类内部,外部 子类 都可以访问;
protected 表示保护类 只有在本类以及子类 访问;
private 表示私有的 只有本类才能访问;
<?php header("content-type:text/html;charset=utf-8"); class A{ public $name; protected $job; private $salary; public function __construct($name,$job,$salary){ $this->name = $name; $this->job = $job; $this->salary = $salary; } public function getName(){ echo "this name".$this->name; } protected function getJob(){ echo "this.job".$this->job; } private function getSalary(){ echo "this.salary".$this->salary; } public function test(){ echo "this.job".$this->job; } public function test2(){ echo "this.salary".$this->salary; } } $zhangsan = new A("zhangsan","PHP工程师",5000); echo $zhangsan->name; echo "<pre/>"; // echo $zhangsan->job; // echo $zhangsan->salary; echo $zhangsan->getName(); echo "<pre/>"; echo $zhangsan->test(); echo "<pre/>"; echo $zhangsan->test2();
继承测试 还没有做 请看下一小结
public protected private 在本类中都能访问,protected private 在类外面不能访问;