PHP OOP编程三大特性 ----封装

基本介绍 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. 具体看图:

 publicprotectedprivate
类外部  
继承类 
本类
 

    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 在类外面不能访问;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值