Heim  >  Artikel  >  Backend-Entwicklung  >  Überschreiben in PHP

Überschreiben in PHP

WBOY
WBOYOriginal
2024-08-29 12:59:101029Durchsuche

Überschreiben ist ein objektorientiertes Programmierkonzept, das einem Konzept wie Klasse, Objekt, Kapselung, Polymorphismus, Überladung usw. in PHP ähnelt. Das Überschreiben von Funktionen und Klassen erfolgt, wenn in der abgeleiteten Klasse eine Methode erstellt wird, die mit der Methode in der Basisklasse oder übergeordneten Klasse identisch ist. Beide Methoden haben den gleichen Namen und die gleiche Anzahl an Argumenten.

WERBUNG Beliebter Kurs in dieser Kategorie PHP-ENTWICKLER - Spezialisierung | 8-Kurs-Reihe | 3 Probetests

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Wie funktioniert das Überschreiben?

Lassen Sie uns untersuchen, wie das Überschreiben in PHP funktioniert.

  • Überschreiben ist ein Konzept, bei dem die abgeleitete Klasse der Basisklasse dieselbe Aktion ausführt wie die einer Basisklasse. Dieses Überschreiben kann für Methoden oder Klassen erfolgen. Wenn es sich um eine Methode handelt, die den Namen der Methode und die Parameter überschreibt, wird festgestellt, dass der Zugriffsspezifizierer mit dem der Methode der übergeordneten Klasse übereinstimmt. Wenn keine Änderung in der Implementierung der Methode in der von der Basisklasse abgeleiteten Unterklasse festgestellt wird, wird zu diesem Zeitpunkt gesagt, dass die Methode der Unterklasse die Methode der Basisklasse überschrieben hat.
  • Angenommen, es gibt eine Klasse namens Person, die über eigene Dateneigenschaften und -methoden verfügt. Dies ist die übergeordnete oder Basisklasse Person mit einer Methode namens speak(). Jetzt gibt es eine weitere Klasse namens Employee, die die Person-Klasse erweitert. Nun verfügt diese Employee-Klasse über eigene Dateneigenschaften und -methoden sowie über eine Methode, die mit der der übergeordneten Klasse identisch ist, z. B.speak().
  • Diese speaks()-Methode ist in der Basisklasse und auch in der abgeleiteten Klasse vorhanden.
  • Was nun passiert, ist, wenn die Klasse instanziiert wird oder wenn das Objekt erstellt wird. Welche der speak()-Methoden ausgeführt wird, was bedeutet, dass Speak von der Basisklasse oder Speak von der abgeleiteten Klasse ausgeführt wird, hängt vom Objekt ab der Klasse heißt.
  • Mit anderen Worten: Wenn ein Objekt der Person-Klasse erstellt wird, wird die speak()-Methode der Person-Klasse aufgerufen und daher ausgeführt. Wenn jedoch das Objekt der Employee-Klasse erstellt wird, wird die speak()-Methode der abgeleiteten Klasse ausgeführt, die die speak()-Klasse der übergeordneten Klasse überschreibt.
  • Und so erfolgt das Überschreiben anhand eines Beispiels
  • Im folgenden Beispiel gibt es zwei Klassen, eine Basisklasse und eine abgeleitete Klasse. Die abgeleitete Klasse erweitert die Basisklasse. Diese Klassen werden initiiert und zwei Objekte $obj1 und $obj2 erstellt. $obj1 ist ein Objekt der BaseClass und $obj2 ist ein Objekt einer abgeleiteten Klasse. Diese Objekte rufen außerdem die in ihren jeweiligen Klassen deklarierten Methoden auf.
  • Hier werden Sie feststellen, dass die Basisklasse und die abgeleitete Klasse dieselbe Methode namens ABC() haben. Wenn Sie dieses Programm ausführen, werden Sie feststellen, dass die ABC()-Methode die Basisklassenmethode ABC() überschrieben hat.

Beispiel für das Überschreiben einer Methode

Das Beispiel für das Überschreiben von Methoden ist unten beschrieben.

Code:

class BaseClass {
public function ABC() {
echo "<br /> In the base class";
}
}
class DerivedClass extends BaseClass {
// override the method ABC() of base class
public function ABC() {
echo "<br />In the derived class";
}
}
$obj1 = new BaseClass;
$obj1->ABC();
$obj2 = new DerivedClass;
$obj2->ABC();

Ausgabe:

Überschreiben in PHP

Überschreiben mit Zugriffsmodifikatoren

Es gibt drei Zugriffsmodifikatoren.

  1. öffentlich:Zugriff von überall im Programm.
  2. privat:Nur ​​von der Elternklasse aus zugänglich.
  3. geschützt:Zugriff über die Basisklasse und die abgeleitete Klasse.

Wie wir wissen, ist die geschützte Methode von einer Basisklasse und der abgeleiteten Klasse aus zugänglich. Sie kann in der Unterklasse öffentlich gemacht werden, aber nicht privat, da auf „private“ nur in der übergeordneten Klasse zugegriffen werden kann. Auch wenn eine Klassenmethode einen Zugriffsbezeichner als öffentlich hat, kann die überschreibende Methode in der abgeleiteten Klasse nicht als privat und geschützt deklariert werden

Beispiel für das Überschreiben von Methoden mithilfe von Zugriffsmodifikatoren

Ein Beispiel für das Überschreiben mithilfe von Zugriffsmodifikatoren finden Sie unten.

Code:

class BaseClass {
private function ABC() {
echo "<br/>In the base class Method : ABC";
}
protected function XYZ() {
echo "<br/>In the base class Method : XYZ";
}
}
class DerivedClass extends BaseClass {
// overriding with public for wider accessibility
public function ABC() {
echo "<br/> In the derived class Method : ABC";
}
// overriding method
// with more accessibility
public function XYZ() {
echo "<br/>In the derived class Method : XYZ";
}
}
//$obj1 = new BaseClass;
//$obj1->ABC();   //throws fatal error
//$obj1->XYZ();          //throws fatal error
$obj2 = new DerivedClass;
$obj2->ABC();
$obj2->XYZ();

Ausgabe:

Überschreiben in PHP

Überschreiben mit endgültigem Schlüsselwort

Das letzte Schlüsselwort wird für Klassen und Methoden verwendet. Methoden und Klassen, nicht Variablen, können überschrieben werden.

Endgültige Methodenüberschreibung

Wenn eine Methode oder eine Klasse als endgültig deklariert ist, kann kein Überschreiben dieser Methode oder Klasse durchgeführt werden, und eine Vererbung mit der Klasse ist nicht möglich.

Beispiel für das Überschreiben einer Methode mit dem Schlüsselwort „Final“

Das Beispiel für das Überschreiben mit dem Schlüsselwort final ist unten aufgeführt.

Code:

class BaseClass {
// Final method – display
// this cannot be overridden in base class
final function display() {
echo "<br /> In the Base class display function";
}
/// method - ABC
function ABC() {
echo "<br /> In the Base cLass ABC function";
}
}
class DerivedClass extends BaseClass {
function ABC() {
echo "<br /> In the Derived class ABC function";
}
}
$obj1 = new DerivedClass;
$obj1->display();
$obj1->ABC();

Ausgabe:

Überschreiben in PHP

Final Class Overriding

A class declared as final cannot be inherited. A Final Class further have final method along with other methods. But since the class itself is declared final there is no use of declaring a final method in a final class.

Example of Class Overriding using Final Keyword

The example of class overriding using final keyword is written below.

Code:

// class declared as final cannot be overridden
final class BaseClass {
// method - ABC
function ABC() {
echo "<br> In the BaseClass Method ABC function";
}
// Final method - display
function display() {
echo "<br> In the BaseClass Method display function";
}
}
// here you cannot extend the base class
// as the base class is declared as final
$obj1 = new BaseClass;
$obj1->display();
$obj1->ABC();

Output:

Überschreiben in PHP

Das obige ist der detaillierte Inhalt vonÜberschreiben in PHP. 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
Vorheriger Artikel:PHP XORNächster Artikel:PHP XOR