继承是OOP程序设计语言的基本特征,所有的面向对象的语言都支持该特性。继承的产生是类和类之间有了相应的层次结构,使类的管理更加的清晰。并且提高了代码的可重用性,如一些功能可以通过继承来获得。在PHP中,可以实现一个类继承另外一个类,但是PHP中不支持多重继承,即继承多个类。在本节中,将对类的继承进行详细的介绍。
在PHP中,类和类之间属于单根继承,当一个类继承另外一个类,该类被称为子类(child class),被继承的类称为父类(parent class),此外,子类可以被称为超类,父类可以被称为基类。当然了,一个类可以被多个子类来继承,一个类只能拥有一个父类。类继承的语法格式如下所示:
class subclass extends superclass{
方法体
}
在上述代码中,subclass表示子类,extends表示类的继承符,superclass表示父类。子类不但可以拥有父类的成员,如方法和字段,还可以拥有自己本身新增的方法。在继承过程中,子类不能拥有父类的私有成员。
现在创建一个案例,演示类的继承。该案例的代码如下所示:
案例6-3
<?php
class MyClass {
private $Hello = "Hello, World!\n";
public $Bar = "Hello, Foo!\n";
public $Foo = "Hello, Bar!\n";
function printHello() {
print "<br>MyClass::printHello() " . $this->Hello;
print "<br>MyClass::printHello() " . $this->Bar;
print "<br>MyClass::printHello() " . $this->Foo;
}
}
class MyClass2 extends MyClass {
public $f="大家好";
function printWorld(){
if($Bar="Hello, Foo!\n")
{echo "<br>子类的判断<br>";}
}
}
$obj = new MyClass();
$obj->printHello();
$obj1 = new MyClass2();
$obj1->printHello();
$obj1->printWorld();
print $obj1->Foo;
print $obj1->f;
?>
将上述代码保存,文件名称为extends.php,并保存到指定的位置。打开IE浏览器,在地址栏中输入http://localhost:8080/class/extends.php,单击就可以直接运行了。