Heim > Backend-Entwicklung > PHP-Tutorial > Detaillierte Erläuterung der Vererbungsverwendungsbeispiele von PHP-Klassen

Detaillierte Erläuterung der Vererbungsverwendungsbeispiele von PHP-Klassen

伊谢尔伦
Freigeben: 2023-03-12 07:40:01
Original
1501 Leute haben es durchsucht

In PHP schreibe ich oft eine Klasse mit einer gemeinsam genutzten Methode und lasse dann die Unterklasse erben, um die entsprechende Funktion zu erhalten. Angenommen, es gibt ungefähr eine solche übergeordnete Klasse:

<?php
class Father{

    public function construct(){
        echo &#39;我是父类的构造方法!&#39;;
    }

    protected function say($str = &#39;Hello World!&#39;){
        echo &#39;说了一句话:&#39; . $str;
    }
}
?>
Nach dem Login kopieren

Erstellen Sie dann eine Unterklasse, um sie zu erben:

<?php

class chirld extends Father{

    public construct(){
        echo &#39;我是子类的构造方法~&#39;;
    }
}
Nach dem Login kopieren

Zu diesem Zeitpunkt instanziieren Sie die Unterklasse und die Das Ergebnis wird sein: Es wird 我是子类的构造方法~ sein!
Natürlich kann die Unterklasse aufgrund der 继承-Beziehung die say()-Methode der übergeordneten Klasse aufrufen.

Wenn Sie den Konstruktor der übergeordneten Klasse, aber auch den Konstruktor der Unterklasse implementieren möchten, können Sie dies folgendermaßen tun:

<?php

class chirld extends Father{

    public construct(){
        parent::construct();
        echo &#39;我是子类的构造方法~&#39;;
    }
}

?>
Nach dem Login kopieren

Zu diesem Zeitpunkt <🎜 wird ausgegeben > und 我是父类的构造方法!. 我是子类的构造方法~

Angenommen, Sie definieren eine solche Methode in der Unterklasse:

protected function say($str = &#39;&#39;){
   echo &#39;我是子类的say&#39;;
}
Nach dem Login kopieren
Dann wird die

-Methode, die Sie von der übergeordneten Klasse geerbt haben, überschrieben. Rufen Sie also auf. Das endgültige Ausgabeergebnis lautet: sys(). 我是子类的say

Was würde passieren, wenn Sie es so definieren würden?

public function say($str = &#39;&#39;){
     echo &#39;我是子类的方法哦~&#39;;
}
Nach dem Login kopieren
Diese Schreibweise ist immer noch in Ordnung. Der Unterschied zwischen PHP und anderen stark typisierten Sprachen besteht darin, dass Sie mit der überschriebenen PHP-Methode die überschriebene Methode „nach oben veröffentlichen“ können, nicht jedoch „nach unten privatisieren“. Ein Fehler wird auf jeden Fall gemeldet, aber in einer Sprache wie C++ ist es genau das Gegenteil.

privatePHP geht davon aus, dass Ihr Vater Ihnen ein geschütztes Erbe gegeben hat. Zu diesem Zeitpunkt ist es ein geschütztes Erbe in Ihren Händen. Das heißt, Ihr Vater erlaubt Ihnen, es mit anderen zu teilen

, aber du darfst es nicht selbst verstecken, das heißt

, du kannst es definitiv nicht alles für dich behalten. publicprivateAn dieser Stelle werden Sie sich sicherlich fragen: Was passiert, wenn

der übergeordneten Klasse auf

gesetzt ist? say()Das Ergebnis wird nicht dasselbe sein, das heißt, die übergeordnete Klasse wurde privatisiert und die Unterklasse kann sie überhaupt nicht erben, sodass Sie die Methode private in der Unterklasse nach Ihren Wünschen anpassen können.
say() Es gibt ein weiteres Problem: Die übergeordnete Klasse hat bereits

mit optionalen Parametern definiert. Was passiert also, wenn Sie sie in der Unterklasse ohne Parameter wie den folgenden definieren?

sys()

Das Ergebnis kann weiterhin normal ausgeführt werden, es wird jedoch eine
public function say(){
    echo &#39;哈哈。我没有参数了耶~&#39;;
}
Nach dem Login kopieren
Level-Eingabeaufforderung angezeigt. Der Grund dafür ist, dass der PHP-Standard darin besteht, dass die Anzahl der Parameter an die übergeordnete Klasse angepasst werden muss. Natürlich kann die Fehlerstufe in php.ini festgelegt werden.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Vererbungsverwendungsbeispiele von PHP-Klassen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage