欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PHP基础知识类继承的三大功能/抽象类的作用与实现/接口的基本语法学习小结

程序员文章站 2022-03-06 17:53:33
...

1. 类继承的三大功能: 继承,重写,扩展

继承: 父类的二类成员自动成为子类的成员

重写: 覆写与父类/基类同名的成员(属性, 方法)

扩展: 子类添加自身的方法来增加/扩展父类的功能

  1. <?php
  2. class Ren
  3. {
  4. public $name;
  5. public $sex;
  6. public $yuyan;
  7. function Say()
  8. {
  9. echo $this->name."正在讲话!";
  10. }
  11. }
  12. //美国人的子类
  13. class America extends Ren
  14. {
  15. public $ziben;
  16. //子类对父类的方法重写
  17. function Say()
  18. {
  19. parent::Say(); //调用父类的Say()方法
  20. echo "hello !";
  21. }
  22. }
  23. //中国人的子类
  24. class China extends Ren
  25. {
  26. public $shehui;
  27. public $wumai;
  28. //对父类方法重写
  29. function Say()
  30. {
  31. echo "你好!";
  32. }
  33. }
  34. $c = new China();
  35. $c->Say();
  36. ?>

结果:你好


2. 抽象类的作用与实现

<?php
abstract class ren {
public abstract function getUserInfo ();

  1. public abstract function getWalletInfo ();
  2. }
  3. class xuesheng extends ren {
  4. public function getUserInfo () {
  5. echo 'getinfo';
  6. }
  7. public function getWalletInfo () {
  8. echo 'getwalletInfo';
  9. }
  10. }
  11. $Tom = new xuesheng ();
  12. $Tom -> getUserInfo();
  13. $Tom -> getWalletInfo ();

?>
结果:getinfogetwalletInfo


3. 接口的基本语法

  1. <?php
  2. // 声明一个'iTemplate'接口
  3. interface iTemplate
  4. {
  5. public function setVariable($name, $var);
  6. public function getHtml($template);
  7. }
  8. class Template implements iTemplate
  9. {
  10. private $vars = array();
  11. public function setVariable($name, $var)
  12. {
  13. $this->vars[$name] = $var;
  14. }
  15. public function getHtml($template)
  16. {
  17. foreach($this->vars as $name => $value) {
  18. $template = str_replace('{' . $name . '}', $value, $template);
  19. }
  20. return $template;
  21. }
  22. }
  23. ?>

总结:

1.继承并不改变类的结构。而是表名了两个类之间存在着某种关系,使得其中的成员看起来像是在别的类中存在。
2.定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。(抽象类可以没有抽象方法,但是抽象类依然不能被实例化)被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。
3.接口(interface)是一种类似于类的结构,可用于声明实现类所必须声明的方法,例如接口通常用来声明api,而不是用来定义如何实现这个api。