三大特性

三大特性

封装

目的:为了让类更安全

三个步骤:

1.将成员变量变为private

2.在类里面做一个成员方法来间接访问

3.在该方法里面加限制条件 

//不想让外界直接访问
//三个步骤
class Ren{
   public $name;
   public $sex;
   public $birthday;
   private $age;      //1.将成员变量变为private
   public  function setage($age){     //2.在类里面做一个成员方法来间接访问
         if($age>=18 && $age<=50){   //3.在该方法里面加限制条件 
             $this->age = $age;   
             }
     }   
   public function getage(){    //获取年龄
      return $this->age;
    }
}
//类里面的成员变量一般都要做封装private,类里面的成员函数一般都是public

封装魔术方法

//设置值
public function __set($name,$value){
     if($name=="age"){     //如果给的名称是age,加限制条件
         if($value>=18 && $value<=50){
         $this->$name = $value;
             }else{
   $this->$name = $value;
           }
      }
 }
$r->age = 20;  //如果类里面写了这个方法,会自动调用这个魔术方法
//会把age作为第一个参数丢进去,等号后面的值当作第二个参数丢进去

//获取值
public function __get($name){
           return $this->$name;
   }
echo $r->age;   //自动调用__get魔术方法

//赋值语句自动调用__set,取值自动调用__get方法

 继承

概念:子类可以继承父类的一切
特点:单继承(一个子类只能有一个父类,一个父类可以有多个子类)

class Ren{
    public $name;
    public $sex;
    public function say(){
         echo"人在讲话";
    }
}
class China extends Ren{    //子类可以继承父类的一切,在拥有这些东西的基础上还可以去扩展一些自己的特点、内容
        public $yuyan;
       //函数重写    名词:override
        public function say(){  //写一个和父类完全一样的方法,实现重写
          parent::say(); //把父类的内容拿过来用
             echo"你好";
    }
}

$c = new China();
$c->say();    

示例

class Suan{
    public $a;
    public $b;
    public function yunsuan(){
      
    }
}

class Jia extends Suan{          //扩展
    public function yunsuan(){
        return $this->a+$this->>b;
     }
 }

多态

概念:当父类引用指向子类实例的时候,由于子类对父类的方法进行了重写,在调用该方法的时候表现出的不同,成为多态。    运行多态,编译多态

重载(PHP没有)

特点:根据参数的不同可以让一个函数实现多个功能

条件:1.方法名一样  2.参数不同  3.参数名相同但是类型不同

原文地址:https://www.cnblogs.com/Whitehat/p/8438778.html