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

    童鞋们,理解了吗?

    如有疑惑,欢迎评论

     

  • 相关阅读:
    Cors 跨域 共享
    关于上传视频到七牛的一些解决方案
    网站上传视频注意点
    Node.js 的环境配置
    动态加载js
    java web项目启动时自动加载自定义properties文件
    Apache Commons 工具类介绍及简单使用
    spring常用的工具类
    shiro内置过滤器研究
    抓取Js动态生成数据且以滚动页面方式分页的网页
  • 原文地址:https://www.cnblogs.com/cleverstone/p/9188607.html
Copyright © 2011-2022 走看看