zoukankan      html  css  js  c++  java
  • php多态的理解

      php是面向对象的脚本语言,而我们都知道,面向对象的语言具有三大特性:封装,继承,多态。php理应具有这三大特性。

      封装是类的构建过程,php具有;php也具有继承的特性。唯独这个多态,php体现的十分模糊。原因是php是弱类型语言。

      java的多态体现的十分清晰,大体分两类:父类引用指向子类对象;接口引用指向实现接口的类对象。java声明变量时都要给变量设定类型,所以存在什么父类引用和接口引用。而php则没有这点体现,php声明变量不需要给变量设定类型,一个变量可以指向不同的数据类型。所以,php不具有像java一样的多态。

      php不具有像java那种清晰的多态,不是代表php不具有多态性。看下面一个例子:

     1 abstract class animal{
     2     abstract function fun();
     3 }
     4 class cat extends animal{
     5     function fun(){
     6         echo "cat say miaomiao...";
     7     }
     8 }
     9 class dog extends animal{
    10     function fun(){
    11         echo "dog say wangwang...";
    12     }
    13 }
    14 function work($obj){
    15     if($obj instanceof animal){
    16         $obj -> fun();
    17     }else{
    18         echo "no function";
    19     }
    20 }
    21 work(new dog()); 
    22 work(new cat());

      上面通过一个关键字instanceof来判断,变量指向的对象是否是animal类的一个实例,下面new cat(),new dog()都是animal子类的对象,而输出了“dog say wangwang...”和“cat say miaomiao...”,说明子类对象是父类的一个实例,从而达到了java多态的功能。

      上边的类是抽象类,也表明了接口与实现接口的类对象同样可以适用。

      至此,得出php虽然多态体现模糊,但还是具有多态特性的。

    如果不曾相逢,心绪不会如此沉重
  • 相关阅读:
    day25:接口类和抽象类
    vue1
    How the weather influences your mood?
    机器学习实验方法与原理
    How human activities damage the environment
    Slow food
    Brief Introduction to Esports
    Massive open online course (MOOC)
    Online learning in higher education
    Tensorflow Dataset API
  • 原文地址:https://www.cnblogs.com/age0420/p/3469850.html
Copyright © 2011-2022 走看看