Vererbung ändert nichts an der Struktur der Klasse. Stattdessen weist es darauf hin, dass zwischen den beiden Klassen eine bestimmte Beziehung besteht, sodass die Mitglieder so aussehen, als ob sie in anderen Klassen existieren.
Der Hauptsyntaxprozess ist: Wenn wir jedoch ein neues Objekt erstellen, öffnen wir zunächst einen Speicherplatz im Datenbereich und initialisieren dann das Objekt. Bei der Initialisierung wird zunächst im dem Objekt entsprechenden Klassenraum nach der Variablen oder Methode gesucht. Wenn eine Vererbungsbeziehung festgestellt wird, wird sie dann in der übergeordneten Klasse gesucht. Daher ändert das, was wir Vererbung nennen, nicht die Struktur der Klasse, sondern fügt lediglich eine Vererbungsbeziehung zwischen den beiden Vererbungsklassen hinzu. (Beispiel: Umschreibvorgang: Wenn in der Unterklasse und der übergeordneten Klasse derselbe Methodenname vorhanden ist, wird die Funktion ersetzt und zunächst nach der Methode in der entsprechenden Klasse des aktuellen Objekts gesucht. Sobald sie gefunden wurde, wird die Suche nicht fortgesetzt . Zu diesem Zeitpunkt sieht es so aus, als ob die Methode in der übergeordneten Klasse überschrieben wurde. Dies ist das Konzept des Überschreibens.
<?php header("Content-Type:text/html;charset=utf-8"); Class A { public $p1=1; const c1=3; static $d1=5; private $e1=7; function f1(){ echo "我是A中的方法!"; } } Class B extends A{ public $p2=2; const c2=4; static $d1=6; private $e2=8; function f1(){ echo "我是B中的方法!".$this->e1; echo "我是B中的方法!".$this->e2; } } $o1=new B(); var_dump($o1); echo "<br/>"; $o1->f1(); echo "<br/>"; A::f1();//此处不建议这么写,这是不严格的语法。 echo "<br/>"; ?>
Hinweis: Der Wert der Variablen e1 befindet sich in var_dump ($o1) und ist mit „ [“ gekennzeichnet. e1": "A":private]=> int(7)", was zeigt, dass auch private Eigenschaften vererbt werden können. Beim Aufruf der Variablen e1 in Klasse B werden undefinierte Variablen angezeigt. Dies zeigt, dass statische Variablen zwar vererbt werden können, sie jedoch nur von der Klasse aufgerufen werden können, in der sie sich befinden (Unterklassen können erben, aber nicht aufrufen).
<?php header("Content-Type:text/html;charset=utf-8"); Class A { public $p1=1; const c1=3; static $d1=5; private $e1=7; function f1(){ echo "我是A中的方法!".self::$d1; } } Class B extends A{ public $p2=2; const c2=4; static $d2=6; private $e2=8; function f1(){ echo "我是B中的方法!".self::$d1; //echo "我是B中的方法!".self::$d2; } } echo "<br/>"; echo "类B中的静态属性d2:".B::$d2; echo "<br/>"; echo "类B中能否继承父类A中的静态属性d1:".B::$d1; echo "<br/>"; echo "类A中的静态属性d1:".A::$d1; echo "<br/>"; echo "类A中能否访问子类B中的静态属性d2:".A::$d2;
Daraus können wir ersehen, dass die Unterklasse auf die statischen Eigenschaften in der übergeordneten Klasse zugreifen kann, die übergeordnete Klasse jedoch nicht auf die statischen Eigenschaften in zugreifen kann Unterklasseneigenschaft. Da das System während der Ausführung einen Suchvorgang von unten nach oben durchführt, sucht es zunächst in der aktuellen Klasse. Wenn es nicht gefunden werden kann, sucht es in der Ebene (übergeordnete Klasse) nach oben. Die übergeordnete Klasse kann nicht bis zur nächsten Ebene (Unterklasse) suchen.
Hinweis: Statische Eigenschaften existieren im Datenraum des Objekts nicht wie gewöhnliche Eigenschaften.
Abschließend anhand von zwei Beispielen: Vererbung ändert keine Struktur der Klasse. Es geht nur um die übergeordnete Klasse im Objekt. Und Funktionen können von der übergeordneten Klasse aufgerufen werden. (Einfach ausgedrückt: Wenn ein Objekt erstellt wird, werden einige speicherbare Daten in dem vom aktuellen Objekt erstellten Datenspeicherbereich gespeichert. Einige nachfolgende Vorgänge über das Objekt werden in diesem Datenspeicherbereich ausgeführt, der mit dem identisch ist Wir haben zuvor geschrieben. Es gibt keine direkte Beziehung zur Klasse. Sobald die Klasse geschrieben ist, wird sie nicht extern geändert.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Vererbungsbeispielen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!