Was ist Überschreiben in PHP?

Overriding ist ein objektorientiertes Programmierkonzept, das einem Konzept wie Class, Object, Encapsulation, Polymorphism, Overloading usw. in PHP ähnelt. Das Überschreiben von Funktionen und Klassen erfolgt, wenn eine Methode in der abgeleiteten Klasse erstellt wird, die der Methode in der Basisklasse oder der übergeordneten Klasse entspricht. Beide Methoden haben denselben Namen und dieselbe Anzahl von Argumenten.

Wie funktioniert Overriding?

  • Überschreiben ist ein Konzept, bei dem die abgeleitete Klasse der Basisklasse dieselbe Aktion ausführt wie die einer Basisklasse. Dieses Überschreiben kann sich auf Methoden oder Klassen beziehen. Wenn es sich um eine Methode handelt, die den Namen der Methode und die Parameter überschreibt, stimmt der Zugriffsbezeichner mit dem der übergeordneten Klassenmethode überein. Wenn bei der Implementierung der Methode in der von der Basisklasse abgeleiteten Unterklasse keine Änderung festgestellt wurde, wird zu diesem Zeitpunkt gesagt, dass die Methode der Unterklasse die Methode der Basisklasse überschrieben hat.
  • Angenommen, es gibt eine Klasse namens Person, die ihre eigenen Dateneigenschaften und Methoden hat. Dies ist die übergeordnete oder Basisklasse Person mit einer Methode namens speak (). Jetzt gibt es eine weitere Klasse namens Employee, die die Klasse Person erweitert. Diese Employee-Klasse verfügt nun über eigene Dateneigenschaften und -methoden sowie über dieselbe Methode wie die übergeordnete Klasse, 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 das Sprechen der Basisklasse oder das Sprechen der abgeleiteten Klasse vom Objekt der Klasse abhängt wird genannt.
  • 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 Übersteuern anhand eines Beispiels
  • Im folgenden Beispiel gibt es zwei Klassen, die Basisklasse und die abgeleitete Klasse. Die abgeleitete Klasse erweitert die Basisklasse. Diese Klassen werden initiiert und zwei Objekte $ obj1 und $ obj2 erstellt. $ obj1 ist ein Objekt von BaseClass und $ obj2 ist ein Objekt einer abgeleiteten Klasse. Diese Objekte rufen ferner 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 von Methoden

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

Ausgabe:

Mit Zugriffsmodifikatoren überschreiben

Es gibt drei Zugriffsmodifikatoren.

  1. public: Zugriff von überall im Programm.
  2. privat: Nur für die Elternklasse zugänglich.
  3. protected: Zugriff über die Basisklasse und die abgeleitete Klasse.

Wie wir wissen, kann auf die geschützte Methode von einer Basisklasse aus zugegriffen werden, und auf die abgeleitete Klasse kann sie in der Unterklasse öffentlich gemacht werden, aber nicht privat, da nur in der übergeordneten Klasse auf private zugegriffen werden kann. Wenn für eine Klassenmethode ein Zugriffsbezeichner als public festgelegt ist, 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

class BaseClass (
private function ABC() (
echo "
In the base class Method : ABC";
)
protected function XYZ() (
echo "
In the base class Method : XYZ";
)
)
class DerivedClass extends BaseClass (
// overriding with public for wider accessibility
public function ABC() (
echo "
In the derived class Method : ABC";
)
// overriding method
// with more accessibility
public function XYZ() (
echo "
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:

Mit dem letzten Schlüsselwort überschreiben

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

Überschreiben der endgültigen Methode

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

Beispiel für das Überschreiben von Methoden mit dem Schlüsselwort final

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

Ausgabe:

Final Class Overriding

Eine als final deklarierte Klasse kann nicht vererbt werden. Eine Abschlussklasse hat außerdem eine Abschlussmethode zusammen mit anderen Methoden. Da die Klasse selbst als final deklariert wird, kann in einer final-Klasse keine final-Methode deklariert werden.

Beispiel für das Überschreiben von Klassen mit dem Schlüsselwort "Final"

// class declared as final cannot be overridden
final class BaseClass (
// method - ABC
function ABC() (
echo "
In the BaseClass Method ABC function";
)
// Final method - display
function display() (
echo "
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();

Ausgabe:

Empfohlene Artikel

Dies ist eine Anleitung zum Überschreiben in PHP. Hier besprechen wir, was außer Kraft gesetzt wird und wie PHP und verschiedene Methoden zusammen mit Beispielcode funktionieren. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren -

  1. Core PHP Interview Fragen
  2. Vorteile von PHP
  3. Karriere in PHP
  4. PHP-Befehle
  5. Anleitung zum Überschreiben in JavaScript
  6. Wie funktioniert das Überschreiben in C ++?
  7. Überschreiben in OOPs | Notwendigkeit einer Methodenüberschreibung
  8. Zugriffsmodifikatoren in PHP
  9. In Java überschreiben