继承指的是一个类(子类)可以拥有另一个类(父类)的属性和方法,两者之间的关系用 extends
关键字来进行关联。
一个子类只能拥有一个父类,不能继承多个父类。
子类可以拥有父类的属性和方法,也可以在子类中使用同名的属性和方法来覆盖(也叫重写、重载)掉。
如果父类定义方法时使用了 final
关键字,则该方法不能被重写。
除构造方法之外,其他方法在进行重写的时候,参数必须保持一致,否则报错。
下面代码中简单的展示了继承相关的内容
// 父类
class Foo{
// 普通成员
public $name;
// 构造函数
public function __construct($n){
$this->name = $n;
}
// 普通方法
public function say(string $str){
echo "<p>{$this->name} : $str</p>";
}
public function eat(){
echo "人是铁,饭是钢,一顿不吃饿得慌!";
}
// 这个方法不能被重写
public final function profile(){
echo "<p>我叫:{$this->name}</p>";
}
}
// 子类
class Bar extends Foo{
// 普通成员
public $age = 10;
// 构造函数
public function __construct($name, $age){
$this->name = $name;
$this->age = $age;
}
// 重写方法
public function say(string $str){
echo "<p>{$this->name}[{$this->age}] : $str</p>";
}
}
// 实例化
$foobar = new Bar('iGuoji', 26);
// 父类方法
$foobar->profile();
// 重写的方法
$foobar->say('你们好啊!');
// 随便说说
$foobar->eat();
最终输出内容
我叫:iGuoji
iGuoji[26] : 你们好啊!
人是铁,饭是钢,一顿不吃饿得慌!