找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1017|回复: 0

多态

[复制链接]

304

主题

42

回帖

1348

积分

管理员

积分
1348
发表于 2021-4-22 12:35:47 | 显示全部楼层 |阅读模式
  1. <?php

  2. /*
  3.         不同的对象,调用同一个方法,会得到不同的形态或者结果。

  4.         抽象类 abstract 统一规范,标准.

  5. */

  6. // 定义抽象类
  7. abstract class Rule
  8. {
  9.         // 定义抽象方法
  10.         abstract public function close();
  11. }

  12. class Google extends Rule
  13. {
  14.         public function close()
  15.         {
  16.                 echo 'Goole:close.<br>';
  17.         }
  18. }

  19. class Firefox extends Rule
  20. {
  21.         public function close()
  22.         {
  23.                 echo 'Firefox:close.<br>';
  24.         }
  25. }

  26. class Ie extends Rule
  27. {
  28.         public function close()
  29.         {
  30.                 echo 'Ie:close.<br>';
  31.         }
  32. }

  33. class Qq extends Rule
  34. {
  35.         public function shutdown()
  36.         {
  37.                 echo 'Qq:close.<br>';
  38.         }

  39.         public function close()
  40.         {
  41.                 $this->shutdown();
  42.         }
  43. }

  44. class User
  45. {
  46.         // 指定了类型声明,必须是 Rule 的后代~
  47.         public function click(Rule $object)
  48.         {
  49.                 $object->close();
  50.         }

  51.         public function test()
  52.         {
  53.         }
  54. }

  55. $user = new User();
  56. $user->click(new Google());
  57. $user->click(new Ie());
  58. $user->click(new Firefox());
  59. $user->click(new Qq());
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|外汇论坛 ( 粤ICP备16021788号 )

GMT+8, 2024-12-22 21:20 , Processed in 0.074180 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表