对象继承
继承将会影响到类与类,对象与对象之间的关系
当扩展一个类,子类就会继承父类所有公有的和受保护的方法。除非子类覆盖了父类的方法,被继承的方法都会保留其原有功能。
提高代码的复用性,可维护性,需要有足够的项目经验,才能理解,先学会使用
- 子类可以继承父类的所有属性,方法(private 除外)
- 同名属性、方法、子类覆盖父类
- 可以多层继承,只能继承一个父类,但可以使用父类继承的父类的属性和方法
注意
除非使用了自动加载,否则一个类必须在使用之前被定义。如果一个类扩展了另一个,则父类必须在子类之前被声明。此规则适用于类继承其它类与接口。
文档: php 手册 - 对象继承
语法 extends
a 作为 b 的子类class a extends b {}
同名属性子类调用父类
parent::方法名()
演示
//父类 foo
class foo
{
public function a()
{
echo '我是父类的 a';
}
public function b()
{
echo '我是父类的 b';
}
}
//子类 bar
class bar extends foo
{
public function a()
{
echo '我是子类的 a';
}
public function b()
{
parent::b(); //同名属性子类调用父类
echo ' + 我是子类的 b';
}
}
$foo = new foo();
$bar = new bar();
echo $foo->a() . '<br>'; //输出:我是父类的 a
echo $foo->b() . '<br>'; //输出:我是父类的 b
echo $bar->a() . '<br>'; //输出:我是子类的 a
echo $bar->b() . '<br>'; //输出:我是父类的 b + 我是子类的 b
输出: