14.2.4 继承
对于面向对象的编程,通过继承可以增加或重写类的方法。这意味着,继承类可以指定更多的属性或方法,而且允许继承类访问基类的方法。继承体现了“is_a”的关系,即“是一个”的关系。例如,Person是一个类,Worker类继承自Person类,那么可以说,Worker类也是Person类。在PHP中,可以通过关键字extends从一个类派生出继承类。如代码14-3所示的程序中,由Person类派生出Work类。
代码14-3 PHP中的继承14-3.php
01 <?php
02 class Person
03 {
04 private$name;//私有成员变量$name
05
06 public function set_name($name)//成员函数set_name()
07 {
08 $this->name=$name;
09 }
10 public function get_name()//成员函数get_name()
11 {
12 return$this->name;
13 }
14 }
15
16 class Worker extends Person//Worker类继承自Person,使用关键字extends
17 {
18 private$salary;
19
20 public function set_salary($salary)
21 {
22 $this->salary=$salary;
23 }
24 public function get_salary()
25 {
26 return$this->salary;
27 }
28 }
29
30 $a_work=new Worker;
31 $a_work->set_name('Paul');//这里调用的set_name()继承自基类Person
32 $a_work->set_salary(3500);
33
34 $name=$a_work->get_name();
35 $salary=$a_work->get_salary();
36 echo$name."的月薪为".$salary;
37 ?>
【代码解析】这段代码首先定义了Person类,然后由该类派生出Worker类。Worker类继承了基类的成员变量$name、成员函数set_name()和get_name()。因此,由派生类Work生成的对象$a_work可以调用基类的方法set_name()为其设置名字,也可以调用基类的方法get_name()获取其名字,如代码第31行所示。