对象继承

继承将会影响到类与类,对象与对象之间的关系
当扩展一个类,子类就会继承父类所有公有的和受保护的方法。除非子类覆盖了父类的方法,被继承的方法都会保留其原有功能。
提高代码的复用性,可维护性,需要有足够的项目经验,才能理解,先学会使用

  • 子类可以继承父类的所有属性,方法(private 除外)
  • 同名属性、方法、子类覆盖父类
  • 可以多层继承,只能继承一个父类,但可以使用父类继承的父类的属性和方法

注意

除非使用了自动加载,否则一个类必须在使用之前被定义。如果一个类扩展了另一个,则父类必须在子类之前被声明。此规则适用于类继承其它类与接口。

文档: php 手册 - 对象继承


语法 extends

a 作为 b 的子类
class a extends b {}

同名属性子类调用父类
parent::方法名()

演示

  1. //父类 foo
  2. class foo
  3. {
  4. public function a()
  5. {
  6. echo '我是父类的 a';
  7. }
  8. public function b()
  9. {
  10. echo '我是父类的 b';
  11. }
  12. }
  13. //子类 bar
  14. class bar extends foo
  15. {
  16. public function a()
  17. {
  18. echo '我是子类的 a';
  19. }
  20. public function b()
  21. {
  22. parent::b(); //同名属性子类调用父类
  23. echo ' + 我是子类的 b';
  24. }
  25. }
  26. $foo = new foo();
  27. $bar = new bar();
  28. echo $foo->a() . '<br>'; //输出:我是父类的 a
  29. echo $foo->b() . '<br>'; //输出:我是父类的 b
  30. echo $bar->a() . '<br>'; //输出:我是子类的 a
  31. echo $bar->b() . '<br>'; //输出:我是父类的 b + 我是子类的 b

输出:
image.png