PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

博客列表 > 实例演示抽象类和接口的区别

实例演示抽象类和接口的区别

残破的蛋蛋
残破的蛋蛋 原创
2021年02月10日 12:41:09 687浏览

一、定义一个接口并完善它

  1. <?php
  2. interface iPerson
  3. {
  4. const NAME = '人类';
  5. public function name ();
  6. public function age ();
  7. public function sex ();
  8. }
  9. class Person implements iPerson
  10. {
  11. public $name;
  12. public $age;
  13. public $sex;
  14. public function __construct(string $name, int $age, string $sex)
  15. {
  16. $this->name = $name;
  17. $this->age = $age;
  18. $this->sex = $sex;
  19. }
  20. public function name () : string
  21. {
  22. return "我的名字是:{$this->name},";
  23. }
  24. public function age () : string
  25. {
  26. return "性别:{$this->sex},";
  27. }
  28. public function sex () : string
  29. {
  30. return "年龄:{$this->age}。";
  31. }
  32. }
  33. $p = new Person('张三', 25, '男');
  34. echo $p->name().$p->age().$p->sex();

二、定义一个抽象类

  1. <?php
  2. abstract class aFunction
  3. {
  4. const FUNCTION = '功能';
  5. abstract public function eat ();
  6. abstract public function say ();
  7. abstract public function work ();
  8. }
  9. class aPerson extends aFunction
  10. {
  11. public function eat ()
  12. {
  13. return '每个人都需要吃饭';
  14. }
  15. public function say ()
  16. {
  17. return '每个人都会说话';
  18. }
  19. public function work ()
  20. {
  21. return '每个人都需要工作';
  22. }
  23. }
  24. $ap = new aPerson;
  25. echo "每一个人类都具备的".aPerson::FUNCTION.":{$ap->eat()},{$ap->say()},{$ap->eat()}。";

抽象类:

  1. 定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的;
  2. 继承一个抽象类的时候,非抽象子类必须定义父类中的所有抽象方法;
  3. 调用方式必须匹配,即类型和所需参数数量必须一致。

接口

  1. 要实现一个接口,使用 implements 操作符。非抽象类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。
  2. 可以同时继承抽象类和实现接口,extends要写在前面.
  3. 抽象类实现接口,不需要重新其中的方法。
  4. 实现多个接口时,接口中的方法不能有重名。
  5. 接口也可以继承,通过使用 extends 操作符。
  6. 类要实现接口,必须使用和接口中所定义的方法完全一致的方式。否则会导致致命错误。
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议