Vererbung in PHP ist ein grundlegendes Konzept der objektorientierten Programmierung (OOP), das es ermöglicht, Klassen hierarchisch zu organisieren und Eigenschaften sowie Methoden von einer übergeordneten Klasse (Basisklasse oder Elternklasse) an eine abgeleitete Klasse (Kindklasse) weiterzugeben. Dies fördert die Wiederverwendung von Code und die Erstellung flexibler und erweiterbarer Softwarearchitekturen.
In PHP wird Vererbung mittels des Schlüsselworts `extends` realisiert. Eine Kindklasse, die von einer Elternklasse erbt, kann auf alle öffentlichen und geschützten Eigenschaften und Methoden der Elternklasse zugreifen.
```php
// Beispiel einer Basisklasse
class Fahrzeug {
public $geschwindigkeit;
// Beispiel einer abgeleiteten Klasse
class Auto extends Fahrzeug {
public $marke;
// Instanziierung eines Objekts der abgeleiteten Klasse
$meinAuto = new Auto();
$meinAuto->beschleunigen(); // Ausgabe: “Das Fahrzeug beschleunigt.“
$meinAuto->hupen(); // Ausgabe: “Das Auto hupt.“
```
PHP bietet drei Zugriffsmodifikatoren: `public`, `protected` und `private`.
- `public`: Eigenschaften und Methoden sind überall zugänglich.
- `protected`: Eigenschaften und Methoden sind nur innerhalb der Klasse selbst und von abgeleiteten Klassen zugänglich.
- `private`: Eigenschaften und Methoden sind nur innerhalb der Klasse selbst zugänglich.
```php
class Fahrzeug {
protected $geschwindigkeit;
class Auto extends Fahrzeug {
public function beschleunigen() {
$this->setGeschwindigkeit(100);
echo “Das Auto beschleunigt auf {$this->geschwindigkeit} km/h.\n”;
}
}
$meinAuto = new Auto();
$meinAuto->beschleunigen(); // Ausgabe: “Das Auto beschleunigt auf 100 km/h.“
```
Abgeleitete Klassen können die Methoden der Elternklasse überschreiben. Hierbei kann die Methode in der Kindklasse spezifischer angepasst werden. Das Schlüsselwort `parent` wird verwendet, um innerhalb der überschriebenen Methode auf die Methode der Elternklasse zuzugreifen.
```php
class Fahrzeug {
public function beschleunigen() {
echo “Das Fahrzeug beschleunigt.\n”;
}
}
class Auto extends Fahrzeug {
public function beschleunigen() {
parent::beschleunigen();
echo “Das Auto beschleunigt schneller.\n”;
}
}
$meinAuto = new Auto();
$meinAuto->beschleunigen(); // Ausgabe: “Das Fahrzeug beschleunigt.“
// “Das Auto beschleunigt schneller.“
```
PHP unterstützt auch abstrakte Klassen, die nicht direkt instanziiert werden können. Solche Klassen dienen als Basis und enthalten mindestens eine abstrakte Methode, die in den abgeleiteten Klassen definiert werden muss.
```php
abstract class Fahrzeug {
abstract public function geschwindigkeit();
}
class Auto extends Fahrzeug {
public function geschwindigkeit() {
return “Die Geschwindigkeit beträgt 100 km/h.”;
}
}
$meinAuto = new Auto();
echo $meinAuto->geschwindigkeit(); // Ausgabe: “Die Geschwindigkeit beträgt 100 km/h.“
```
1. Offizielle PHP-Dokumentation über Klassen und Objekte: [PHP.net – Klassen und Objekte](https://www.php.net/manual/de/language.oop5.php)
2. PHP: The Right Way: [Einführung in die OOP in PHP](http://www.phptherightway.com/pages/Design-Patterns.html)
3. W3Schools PHP OOP Tutorial: [W3Schools OOP](https://www.w3schools.com/php/php_oop_inheritance.asp)
Diese Ressourcen bieten eine detaillierte und umfassende Erklärung der Konzepte der Vererbung in PHP und deren praktische Anwendung.