Heim  >  Artikel  >  Backend-Entwicklung  >  Stellt self die aktuelle Klasse oder die Zugriffsklasse bei der Vererbung dar?

Stellt self die aktuelle Klasse oder die Zugriffsklasse bei der Vererbung dar?

autoload
autoloadOriginal
2021-03-04 10:18:021915Durchsuche

Das Schlüsselwort self wird verwendet, um die Klasse innerhalb der Klasse zu ersetzen und die Klasse selbst zu ersetzen, in der sich die aktuelle Methode befindet. Mit der Implementierung von inheritance, wenn der child Wenn eine Klasse auf die Methode der übergeordneten Klasse zugreift, ersetzt self dann die aktuelle Klasse oder die Klasse, auf die zugegriffen wird?
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
?>

Wie im obigen Beispiel gezeigt, repräsentiert self die aktuelle Klasse, also ihre übergeordnete Klasse, nicht die geerbte Unterklasse.

Wenn Sie beim Zugriff auf die Methode dynamisch die Klasse auswählen, zu der der Besucher gehört, müssen Sie das Schlüsselwort static key anstelle von self verwenden, um auf Klassenmitglieder zuzugreifen. rrreeeempfohlen: php-Tutorial,

🎜php-Video-Tutorial🎜🎜

Das obige ist der detaillierte Inhalt vonStellt self die aktuelle Klasse oder die Zugriffsklasse bei der Vererbung dar?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn