Aufrufen von Funktionen einer untergeordneten Klasse aus einer übergeordneten Klasse
In PHP ist es möglich, eine Funktion aus einer untergeordneten Klasse innerhalb einer übergeordneten Klasse aufzurufen, aber es erfordert eine sorgfältige Planung.
Betrachten Sie das folgende Codebeispiel:
class whale { ... }
class fish extends whale { ... }
In diesem Beispiel haben wir eine Walklasse und eine Fischklasse, die davon erbt. Das Ziel besteht darin, die test()-Funktion aus der Fischklasse innerhalb der myfunc()-Funktion der Walklasse aufzurufen.
Lösung: Verwenden Sie abstrakte Klassen
Um dies zu erreichen Dadurch können wir abstrakte Klassen nutzen. Eine abstrakte Klasse erzwingt die Implementierung bestimmter Methoden in ihren untergeordneten Klassen.
abstract class whale {
function __construct() { ... }
function myfunc() { $this->test(); }
abstract function test();
}
In der aktualisierten Whale-Klasse deklarieren wir jetzt myfunc() und test() als abstrakte Methoden. myfunc() ruft test() auf, das in der untergeordneten Klasse implementiert werden muss.
class fish extends whale {
function __construct() { parent::__construct(); }
function test() { echo "So you managed to call me !!"; }
}
In der Fischklasse stellen wir eine Implementierung für test() bereit. Dadurch wird sichergestellt, dass die abstrakten Anforderungen der übergeordneten Klasse erfüllt werden.
Mit diesem Setup können wir nun die test()-Funktion von fish innerhalb myfunc() der Whale-Klasse aufrufen.
$fish = new fish();
$fish->test(); // Output: So you managed to call me !!
$fish->myfunc(); // Output: So you managed to call me !!
Durch die Verwendung abstrakter Klassen erzwingen wir eine ordnungsgemäße Vererbung und stellen sicher, dass untergeordnete Klassen die erforderlichen Methoden implementieren. Dadurch können wir untergeordnete Klassenfunktionen nahtlos von übergeordneten Klassen aufrufen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3