PHP面向对象三大特性

---恢复内容开始---

面向对象三大特性
  a封装
  目的:为了让类更安全
    1.将成员变量变为private
    2.在类里面做一个成员方法来间接访问
    3.在该方法里面加限制条件

class Ren{
    public $name;
    public $sex;
    public $birthday;
    private $age;                   //将$age变量变为private
    public function setage($age){   //做一个方法间接访问年龄$age
        if($age>=18 && $age<=50){   //限制条件:18-50岁之间
            $this->age = $age;
        }
    }
    public function getage(){
        return $this->age;
    }
    
    public function __set($name,$value){     
        if($name=="age"){
            if($value>=18 && $value<=50){
                $this->$name = $value;
            }
        }else{
            $this->$name = $value;
        }
        
    }
    
    public function __get($name){
        return $this->$name;
    }
}
$r = new Ren();
$r->name = "张三";
$r->age = 20; //自动调用魔术方法__set
echo $r->age; //自动调用魔术方法__get
var_dump($r); 

  b继承
  概念:子类可以继承父类的一切’
  特点:单继承->一个父类可以有多个子类,一个子类只能有一个父类

class Ren{
    public $name;
    public $sex;
    public function say(){
        echo "人在讲话";
    }
}
class China extends Ren{
    public $yuyan;
    //函数重写  override
    //重载  overload
    public function say(){  //函数重写
        //调用父类里面的方法
        parent::say();
        echo "你好";
    }
}

$c = new China();
$c->say();
class Suan{
    public $a;
    public $b;
    public function yunsuan(){
    }
}
//父类规定了一个运算方法,在子类Jia中进行了重写
class Jia extends Suan{
    public function yunsuan(){
        return $this->a+$this->b;
    }
}

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

  运行多态  
  编译多态 overload

原文地址:https://www.cnblogs.com/rose1324/p/8295135.html