博主信息
博文 45
粉丝 3
评论 0
访问量 57982
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
实例演示抽象类和接口的区别
残破的蛋蛋
原创
930人浏览过

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

  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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学