美文网首页
关于self和static的静态调用

关于self和static的静态调用

作者: 叶敏 | 来源:发表于2018-02-26 09:59 被阅读0次

本文主题是后期静态绑定,探讨在继承范围内,通过self和static调用静态方法时,实际指向的类是父类还是子类。

使用魔术变量Class, 输出实际指向的类名。实例化Son类后,在使用selfGet时调用的是父类的hello方法, 在使用staticGet调用的是子类的hello方法。

class Father{

    public static function hello()
    {
        echo __Class__;
    }

    public static function selfGet()
    {
        echo self::hello();
    }

    public static function staticGet()
    {
        echo static::hello();
    } 
}

class Son extends Father{

    public static function hello()
    {
        echo __Class__;
    }

}   

(new Son)::selfGet();//输出结果father
echo "<br>";
(new Son)::staticGet();//输出结果son

这是因为使用self调用静态方法时,是在子类未实例化调用之前就已经绑定完毕,所以他原先在父类中指向的就是父类中的方法。而static是在实例化的时候才进行绑定指向的是此时实例化的类,也就是子类。

相关文章

  • 关于self和static的静态调用

    本文主题是后期静态绑定,探讨在继承范围内,通过self和static调用静态方法时,实际指向的类是父类还是子类。 ...

  • Lua语法-self:和self. 调用方法

    Lua语法-self:和self. 调用方法 实例方法使用self: 调用 全局静态方法使用self.调用 如...

  • C#学习笔记<五> static

    1 静态成员 static成员中不能调用非static成员非static成员中可以调用static成员静态成员类似...

  • php中static静态属性和静态方法的调用

    简介 这里分析了php面向对象中static静态属性和静态方法的调用。关于它们的调用(能不能调用,怎么样调用),需...

  • php static self 应该要掌握的区别

    php static 和 self 都可以调用类中静态的属性和方法,但是他们还是具备一些本质上的不同,稍微不注意就...

  • Java学习 Day9

    1.static(静态):修饰成员变量,成员方法,静态块。 静态变量和静态方法的调用:类名和对象名调用。调用语法:...

  • 方法与static静态方法

    一般方法和static静态方法差异 都是方法。 静态方法前有static 关键字 调用方式不同 一般方法调用,实例...

  • static关键字

    静态与非静态间的调用 static内存使用情况 static代码块

  • PHP中static和self的区别

    PHP中static和self的区别 使用 self:: 或者__CLASS__对当前类的静态引用,取决于定义当前...

  • Static静态 详解

    # Static静态 # public static void main (1)类只是用来存储和被调用的,而对象是...

网友评论

      本文标题:关于self和static的静态调用

      本文链接:https://www.haomeiwen.com/subject/bifexftx.html