php面向对象基础(二)

面向对象三大特性
1.封装
目的:为了使类更加安全
做法:
a.将成员变量变为私有的
b.做一个成员方法来间接访问
c.在该方法里边加限制条件
class Ren
{
    private $age;//18-50之间
    private $name;
    //魔术方法,给变量赋值
    function __set($n,$v)
    {
        if($n=="age")
        {
            if($n>=18&&$n<=50)
            {
                $this->$n = $v;
            }
        }
        else
        {
            $this->$n = $v;
        }
    }
    //魔术方式,取变量值
    function __get($n)
    {
        return $this->$n;
    }
    //以下此方法仅适用于一个或者两个变量
    /*function setAge($n)
    {
        if($n>=18&&$n<=50)
        {
            $this->age=$n;
        }
    }
    function getAge()
    {
        return $this->age;
    }    */
}
$r=new Ren();
$r->__set("age",20);
$r->age=20;
$r->name="张三";
var_dump($r);

2.继承
子类可以继承父类的一切(除了私有成员之外)
特点:单继承
class Ren
{
    private $name;
    function Run()
    {
        echo "跑步:<br>";
    }
}
class China extends Ren //extends继承自谁
{
    //重写override
    function Run()
    {
        parent::Run();
        echo "中国人跑步";
    }
}
$c=new China();
$c->Run();
var_dump($c);

3.多态(弱类型语言实现不了多态)
定义:当父类引用指向子类实例的时候,由于子类对父类的方法进行了重写,该引用在调用方法的时候所表现出的不同

原文地址:https://www.cnblogs.com/zhaohui123/p/6737545.html