首頁 > 後端開發 > PHP問題 > self在繼承中代表的是目前類別還是存取類別?

self在繼承中代表的是目前類別還是存取類別?

autoload
發布: 2023-03-08 12:40:02
原創
1941 人瀏覽過

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在繼承中代表的是目前類別還是存取類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板