PHP面向对象多态性实现方法简单示例

这篇文章主要介绍了PHP面向对象多态性实现方法,简单说明了面向对象多态性的原理并结合具体实例给出了php实现多态性的相关操作技巧,需要的朋友可以参考下

本文实例讲述了PHP面向对象多态实现方法,分享给大家供大家参考,具体如下:

多态:父类引用指向子类对象(面向对象中能够根据使用类的上下文(使用输入不同的类调用不同类的方法)来重新定义或改变类的性质和行为。);接口引用指向实现接口的类对象。

面向对象:把数据(属性),操作数据的方法,逻辑,形成一个类,把类抽象出来形成对象,通过对象使用类;

  1. <?php
  2. class work{
  3. function polymorphic($obj){
  4. //检查是否引用类型(obj是否继承animal类)
  5. if($obj instanceof animal){
  6. $obj -> fun();
  7. }
  8. else{
  9. echo "no function";
  10. }
  11. }
  12. //如果需要指定类 (指定cat类,包含cat子类)
  13. function bose(cat $obj){
  14. $obj->fun();
  15. }
  16. }
  17. //抽象类
  18. abstract class animal{
  19. abstract function fun();
  20. }
  21. //cat猫类
  22. class cat extends animal{
  23. function fun(){
  24. echo "cat say miaomiao...";
  25. }
  26. }
  27. //dog狗类
  28. class dog extends animal{
  29. function fun(){
  30. echo "dog say wangwang...";
  31. }
  32. }
  33. class mouse extends cat{
  34. }
  35. //先new一个work类
  36. $new_work = new work();
  37. //然后通过new_work对象 调用 polymorphic 方法,传入不同的类实现 父类引用指向子类对象;接口引用指向实现接口的类对象(多态)。
  38. $new_work->polymorphic(new cat());
  39. echo '<br/>';
  40. $new_work->polymorphic(new dog());
  41. echo '<br/>';
  42. //指定类方式仿java
  43. $new_work->bose(new cat());
  44. echo '<br/>';
  45. //如果传输其他类,或者未继承cat类则会报错
  46. //$new_work->bose(new dog());
  47. echo '<br />';
  48. //这也不会报错
  49. $new_work->bose(new mouse());

运行结果:

cat say miaomiao...

dog say wangwang...

cat say miaomiao...

cat say miaomiao...