zoukankan      html  css  js  c++  java
  • PHP 面向对象 static 和 self 的区别

    一、前言

    php是世界上最好的语言

    php从面向过程走到现在成熟的面向对象体系, 在php面向对象中,静态变量的调用我们可以用这两个self::method和 static::method, 但是很多童鞋迷惑,不理解self::method和static::method有什么区别,下面给出两个例子一看究竟:

    例子1:

     1 class Car {
     2     public static function model()
     3     {
     4         self::getModel();
     5     }
     6     protected static function getModel()
     7     {
     8         echo "This is a car model";
     9     }
    10 }
    11 Car::model(); //This is a car model
    12 echo '<br />';
    13 Class Taxi extends Car {
    14     protected static function getModel()
    15     {
    16         echo "This is a Taxi model";
    17     }
    18 }
    19 Taxi::model(); //This is a car model

    总结: self::getModel()调用方法getModel(), 子类的方法getModel()实际意义上没有重载父类的方法getModel().

    例子2 :

     

     1 class Car {
     2     public static function model()
     3     {
     4         static::getModel();
     5     }
     6     protected static function getModel()
     7     {
     8         echo "This is a car model";
     9     }
    10 }
    11 Car::model();  //This is a car model
    12 echo '<br />';
    13 Class Taxi extends Car {
    14     protected static function getModel()
    15     {
    16         echo "This is a Taxi model";
    17     }
    18 }
    19 Taxi::model(); //This is a Taxi model

     

    总结: self::getModel()调用方法getModel(), 子类的方法getModel()重载了父类的方法getModel().

    童鞋们,理解了吗?

    如有疑惑,欢迎评论

     

  • 相关阅读:
    电子商务概论【0351】
    数据库原理
    建筑结构CAD[0753]
    计算机图像处理基础[9124]
    计算机基础[1056]
    计算机组成原理【0013】
    C语言程序设计【0039】
    计算机基础1056
    专业英语[0089]
    double数据转换成char字符串的函数——dtostrf()用法
  • 原文地址:https://www.cnblogs.com/cleverstone/p/9188607.html
Copyright © 2011-2022 走看看