一、封装
目的:让类更加安全
类的成员变量都要封装,封装的函数前面是public
封装的方法1、成员变量变为private
2、在类里做一个成员方法来访问
3、在该方法加限制条件
=18&&$age<=50){ $this->age = $age; }//限制条件 } } $r = new Ren(); //$r->setage(20); $r->setage("zhang"); var_dump($r) ?>
上面的例子有个弊端,封装几个成员变量就要写多少成员方法,代码量比较繁冗。
4、魔术方法
=18&&$value<=50){ $this->$name = $value; } } else{ $this->$name = $value; } } } $r = new Ren(); $r->name = "张三"; $r->age = 20;//自动调用__set var_dump($r) ?>
class Ren{ public $name; public $sex; private $age;//public----private public function __set($name,$value){//$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 $r->age;//自动调用__get var_dump($r) ?>
赋值语句用__set 取值语句用__get
二、继承
概念:子类可以继承父类的一切
特点:单继承(一个子类只能有一个父类,一个父类可以有多个子类)
say(); $r->say(); var_dump($a); var_dump($r); ?>
1、重写 override
子类可以对父类的函数重写(子类可以扩展父类没有的内容)
say(); var_dump($r) ?>
函数重写2
say(); var_dump($r) ?>
2、重载 overload
一般发生在强类型语言中
目的是一个方法实现多个功能
重载的条件: 方法名字相同,参数个数不同,参数个数相同类型不同。
test(1,2); var_dump($r) ?>
3、重写的实例
a+$this->b; } } $r = new Suan(); $r1 = new Jia(); $r1->a=45; $r1->b=60; $r1->yunsuan(); ?>
三、多态
当父类引用指向子类实例的时候,由于子类对父类的方法进行了重写,在调用该方法的时候所表现出的不同,我们称为多态
运行多态
编译多态
编译多态就是重载
多态发生在编译的时候产生了不同就是重载