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().

    童鞋们,理解了吗?

    如有疑惑,欢迎评论

     

  • 相关阅读:
    玩游戏(dfs)
    Find them, Catch them(并查集)
    Shredding Company(dfs)
    Sudoku(dfs)
    Network Saboteur(dfs)
    棋盘问题(dfs)
    Curling 2.0(dfs)
    A Knight's Journey(dfs)
    15. 3Sum
    12. Integer to Roman
  • 原文地址:https://www.cnblogs.com/cleverstone/p/9188607.html
Copyright © 2011-2022 走看看