三大特性
三大特性
封装
目的:为了让类更安全
三个步骤:
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.参数名相同但是类型不同