1.重载 Overload
子类改变父类的方法,为重载。
重载是一种覆盖性行为,会将以前的方法覆盖掉。
2.重载案例:
1 <?php 2 class EMBA_student // 声明EMBA学生类 3 { 4 //用var来定义类的属性 5 var $no; //序号 6 var $name; // 姓名 7 var $gender; //性别 8 var $age; //年龄 9 10 //方法 11 //方法1 ,设定学生的信息方法 12 function set_data ($arr) 13 { 14 $this->no=$arr["no"]; 15 $this->name=$arr["name"]; 16 $this->gender=$arr["gender"]; 17 $this->age=$arr["age"]; 18 } 19 // 方法2, 让学生年龄长大$i岁 20 function set_grow($i) 21 { 22 $this->age+=$i; 23 } 24 //方法3 ,输出学生信息的方法 25 function get_data() 26 { 27 echo "<br /> 28 <b>长江商学院EMBA班学生信息</b><br /> 29 "; 30 31 echo"学号:$this->no<br />"; 32 echo"姓名:$this->name<br />"; 33 echo"性别:$this->gender<br />"; 34 echo"年龄:$this->age<br />"; 35 36 } 37 } 38 // 继承EMBA学生类,来创建一个EMBA方向类 39 class college_student extends EMBA_student{ 40 var $department; //定义一个新的属性所在系 41 function change_department($new_department) //定义一个新的方法,更换所在系 42 { 43 $this->department=$new_department; //让学员所在系变成参数系 44 } 45 //重载父类的方法,设定学员的信息 46 function set_data($arr){ 47 $this->no=$arr["no"]; 48 $this->name=$arr["name"]; 49 $this->gender=$arr["gender"]; 50 $this->age=$arr["age"]; 51 $this->department=$arr["department"]; 52 } 53 } 54 //实例化一个对象 55 $s=new college_student; 56 $arr=array("no"=>"1","name"=>"Qian Zhang","gender"=>"Female","age"=>"33","department"=>"商业营销"); 57 $s->set_data($arr); 58 // $s->department="商业营销"; 因为采用了函数的重载,所以不需要在这个地方为对象赋值了 59 echo"该学员所在专业为:$s->department<br />"; 60 $s->change_department("哲学工商管理"); 61 echo"该学员所在专业为:$s->department<br />"; 62 $s->get_data(); 63 64 65 66 ?>
结果:
该学员所在专业为:商业营销
该学员所在专业为:哲学工商管理
长江商学院EMBA班学生信息
学号:1
姓名:Qian Zhang
性别:Female
年龄:33
3.函数中,对数组键值的定义方式值得学习:
1 class EMBA_student // 声明EMBA学生类 2 { 3 //用var来定义类的属性 4 var $no; //序号 5 var $name; // 姓名 6 var $gender; //性别 7 var $age; //年龄 8 9 //方法 10 //方法1 ,设定学生的信息方法 11 function set_data ($arr) 12 { 13 $this->no=$arr["no"]; 14 $this->name=$arr["name"]; 15 $this->gender=$arr["gender"]; 16 $this->age=$arr["age"]; 17 } 18 }
先定义属性,然后直接以[]来定义键名。