• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP基础教程十一之封装、继承、多态

php 搞代码 3年前 (2022-01-22) 15次浏览 已收录 0个评论

本节讲解的内容

  • 封装

  • 继承

  • 多态

  • 重载

  • 重写

前言

PHP的面向对象和JAVA的面向对象一样,都分为三大特征,封装,继承,多态。这三个特征把面向对象进行了很多方面的优化。这三大特征也是在开发面向对象的时候需要考虑的问题。

封装

在面向对象中什么是封装呢?

封装:把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其他部分只有通过被授权的操作(成员方法),才能对数据进行操作。

上面有提到抽象,也就是把一类事物共有属性和行为(方法)提取出来,形成一个模板(类), 这种研究问题的方法,我们称为抽象。

就像我们的银行账号,不管是谁的账号,都包括账号,密码,同时也有一些共同的方法,取款,存款,查询余额。我们用封装的思想就是:

<?php    class Account{        public $account_no;        private $pwd;        private $balance;        public function __construct($account_no, $pwd = '123456', $balance = 0.0){            $this->account_no = $account_no;            $this->pwd = $pwd;            $this->balance = $balance;        }        //存款        public function deposit($amount, $pwd){            if($pwd == $this->pwd){                echo '<br> 存款成功';                $this->balance += $amount;            }else{                echo '<br> 密码不正确';            }        }        //取款        public function withdraw($amount, $pwd){            if($pwd == $this->pwd){                if($this->balance >= $amount){                    echo '<br> 取款成功';                    $this->balance -= $amount;                }else{                    echo '<br> 余额不足..';                }            }else{                echo '<br>密码错误&#3<strong style="color:transparent">来2源gaodaima#com搞(代@码&网</strong><label>搞gaodaima代码</label>9;;            }        }        //查询        public function query($pwd){            if($pwd == $this->pwd){                echo '<br> 账号' . $this->account_no . ' 余额=' . $this->balance;            }else{                echo '<br> 查询密码错误';            }        }    }    $account = new Account(123456789, 'hsp123', 2000000);    $account->deposit(30000, 'hsp123');    $account->query('hsp123');    $account->withdraw(99999900, 'hsp123');    $account->query('hsp123');

上面的代码就是银行业务的封装,通过封装代码。我们操作,只需要调用里面提供的方法就可以了,而不用管理里面的业务是怎么处理的。这是一个重要的思想。而我们实现封装的方法是使用访问修饰符,利用访问修饰符的访问特性,把不让外部使用的属性或方法封装起来。而在上节中我们讲过三种访问修饰符。
那么我们怎么访问protected 和 private 成员属性呢?这里有三种方法。

第一种

使用魔术方法__get() 和 __set() 来访问

<?php    class Cat{        private $name;        private $age;        public function __construct($name,$age){            $this -> name = $name;            $this -> age = $age;        }        public function __set($name,$value){            //判断类中有没有这个属性            if(property_exists($this,$name)){                $this -> $name = $value;            }else{                echo '没有这个属性';            }        }        public function __get($name){            return $this -> $name;        }    }    $cat = new Cat('小白',2);    $cat -> name = '小花';    echo $cat -> name;    ......结果......    小花

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP基础教程十一之封装、继承、多态

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址