zoukankan      html  css  js  c++  java
  • php面向对象三大特性

    1.封装:

    目的:使类更加安全

    步骤:
    1、成员变量变成private(私有的)
    2、设置方法/调用方法
    3、在方法中增加限制

    <?php
    class shao
    {
        private $aa;//必须是私有的
        private $bb;
        public function set_aa($v)
        {
            $this->aa = $v;
        }
        public function get_aa()
       {
        return $this->aa;//给aa一个返回值
       }
       public function set_bb($v)
       {
           if($v>0&&$v<188)//给bb增加加一条限制
           {
               $this->bb=$v;
           }
       }
    }
    $shili = new shao();
    $shili->set_aa('李');
    //var_dump($shili);
    //echo $shili->get_aa();
    $shili->set_bb(20);
    var_dump($shili);
    ?>

    魔术方法:

    <?php
    class shao
    {
        private $aa;
        private $bb;
        function __set($name, $value)
        {
            // TODO: Implement __set() method.
            if($name == 'bb')
            {
                if ($value>0&&$value<188)
                {
                    $this->$name = $value;
                }
            }
    
        }
        function __get($name)
        {
            // TODO: Implement __get() method.
            return $this->$name;
        }
    }
    $shili = new shao();
    $shili->__set('bb',8);//bb放到set的name里面,着个参数是可变的
    echo $shili->__get('bb');//取bb
    ?>

    2.继承:

    子类与父类的属性与方法
    子类继承父类的所有内容,但父类中的private部分不能直接访问
    子类中新增加的属性和方法是对父类的扩展
    子类中定义的与父类同名的属性是对父类属性的覆盖,同名的方法也是对父类方法的覆盖

    <?php
    class  shao
    {
        public function sasa($name){
            echo $name,'狗!<br/>';
        }
    }
    class zhen extends shao{
        public function aaa()
        {
            echo '猫<br/>';
        }
    }
    $lli = new zhen();
    $lli->aaa();
    $lli->aaa('binghh');
    ?>

    重写方法,详细见php面向对象中的重写与重载**

    3.多态:

    当父类引用指向子类实例的时候,由于子类对父类的方法进行了重写,父类引用在调用该方法的时候表现出的不同,称为多态

    多态性是指在父类中定义的属性或行为被子类继承之后,

    可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或行为在父类及其各个子类中具有不同的语义。
    就是说同一种方法在子类与父类中执行的结果不同。

    条件:
    1.要有继承
    2.父类引用指向子类实例
    3.要有重写
    4.调重写的方法

    **************编译多态********************

    可以使类里面的某个方法产生多种效果,根据传入的参数不同,可以执行不同的逻辑

    <?php
    class fu
    {
        public function text(){
            echo '父类';
        }
        public  function  textt(){
            echo '父亲';
        }
    }
    class erzi extends fu
    {
    
            function test($name)
            {
                //方法重载
                parent::text();//我要父类的东西
                echo "erzi",$name;//重写
    
            }
        }
    
    $erzi = new fu();
    $erzi-> text("123");
    ?>

    以上是重载方法,详细见php面向对象中的重写与重载**

  • 相关阅读:
    pat甲级 1155 Heap Paths (30 分)
    pat甲级 1152 Google Recruitment (20 分)
    蓝桥杯 基础练习 特殊回文数
    蓝桥杯 基础练习 十进制转十六进制
    蓝桥杯 基础练习 十六进制转十进制
    蓝桥杯 基础练习 十六进制转八进制
    51nod 1347 旋转字符串
    蓝桥杯 入门训练 圆的面积
    蓝桥杯 入门训练 Fibonacci数列
    链表相关
  • 原文地址:https://www.cnblogs.com/xuan584521/p/6395923.html
Copyright © 2011-2022 走看看