欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

self在继承中代表的是当前类还是访问类?

程序员文章站 2022-04-02 20:28:00
...
self关键字是用于在类内部代替类的,代替的是当前方法所在的类本身那个,随着继承的实现,如果子类在访问父类方法的时候,self到底代替的是当前类还是访问类?
<?php
   class Fu{
       public static $type="Fu";
       public static function getType(){
           echo self::$type." self<br>";
           
       }
   }

   class Zi extends Fu{
    public static $type="Zi";
    
   }
   Fu::gettype();//Fu self
   Zi::gettype();//Fu self
?>

由上例所示,self代表的是当前类,即其所在的父类,而并非继承的子类。

如果在方法被访问时动态的选择来访者所属的类,则需要使用static关键字代替self进行类成员访问。

<?php
   class Fu{
       public static $type="Fu";
       public static function getType(){
           echo self::$type." self<br>";//类的静态绑定
           echo static::$type." static<br>";//类的静态延迟绑定
       }
   }

   class Zi extends Fu{
    public static $type="Zi";
    
   }

   Fu::gettype();//Fu self Fu self
   Zi::gettype();//Fu self Zi static
?>

推荐:php教程,php视频教程

以上就是self在继承中代表的是当前类还是访问类?的详细内容,更多请关注其它相关文章!