PHP面向对象三大特性

一、封装,保证类的安全和稳定,理论上类里的成员变量都要封装,封装的步骤是

  第一步,将成员变量变为private,

  第二步,在类里面做一个成员方法间接访问,

  第三步,在该方法里面加限制条件,

class Ren{
    public $name;
    public $sex;
    public $birthday;
    private $age;    
    public function setage($age){
        if($age>=18 && $age<=50){
        $this->age = $age;
        }
    }
}

    以上例子是要求年龄在18到50之间,

  封装一般用魔术方法set做,如

class Ren{
    public $name;
    public $sex;
    public $birthday;
    private $age;    
        public function __set($name,$value){    //$name代表成员变量名,$value代表成员变量值,在这里都形参,没有实际意义,参数是在调用封装变量时自动获取传入的
          if($name=="age"){
              if($value>=18 && $value<=50){
                  $this->$name = $value;    
            }    
        }
    }
}    

    如此封装的成员变量调用时方法不变,但是已经封装好,所以只有在类里面才能看出是否封装

 

二、继承,子类可以继承父类的一切,

    特点:单继承,一个子类只能有一个父类,一个父类可以有多个子类,

    函数重写 override:子类可以对父类的函数进行重写,在子类写一个与父类函数名相同的函数,然后重写即可

    重载 overload 一般在强类型语言出现 ,一个方法可以实现多种功能,函数名一样,但是参数不同,参数不同可以在于个数也可以在于参数的类型,

class Ren{                    //创建人的类
    public $name;
    public $sex;
    public function say(){    //父类的方法
        echo "哈哈";    
    }
}
class China extends Ren{    //创建中国人的类,属于人的子类
    public $yuyan;
    public function say(){  //函数重写
        //调用父类的方法,形式上的调用,这样可以同时执行父类的函数和子类的函数
        parent::say();
        echo "你好";    
    }    
}
$r = new China();
$r->say();

 

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

  多态一般出现在强类型语言中,

  运行多态,指代码运行中出现的多态

  编译多态,指编写代码时就指定好的多态,就是重载。

  

    

posted @ 2018-01-08 16:25  黑山大胖子  阅读(250)  评论(0编辑  收藏  举报