Vererbung von PHP-Klassen
Zur Navigation springen
Zur Suche springen
Links
Zielsetzung
Eine Klasse B kann alle Elemente einer anderen Klasse A erben:
- Die Daten von A sind auch in B verfügbar
- Die Operationen von A sind auch in B verfügbar.
Beispiel
<?php
class Name {
public $firstname;
public $lastname;
public $title;
public function __construct(string $firstname, string $lastname, string $title = ''){
$this->firstname = $firstname;
$this->lastname = $lastname;
$this->title = $title;
}
public function fullname(): string{
$rc = '';
if ($this->title !== ''){
$rc = $this->title . ' ';
}
return $rc . $this->firstname . ' ' . $this->lastname;
}
}
class Address extends Name {
public $phone;
public function __construct(string $firstname, string $lastname, string $phone, string $title = ''){
parent::__construct($firstname, $lastname, $title);
$this->phone = $phone;
}
public function info(){
$rc = $this->fullname() . ' ' + $this->phone;
return $rc;
}
}
$addressHuber = new Address('Bob', 'Huber', '0172-11339922', 'Dr.');
echo 'Hallo ', $addressHuber->fullname(), "\n";
echo $addressHuber->info(), "\n";
$addressMiller = new Address('Bea', 'Miller', '0156-75429739');
echo $addressMiller->info(), "\n";
- Wir definieren eine "Basisklasse" namens Name.
- Diese Klasse hat die Methode fullname().
- Wir definieren eine "Oberklasse" namens Address, die als Unterklasse Name enthält:
Address extends Name
- Im Konstruktor rufen wir den Konstruktor der Basisklasse auf, damit Vorname und Nachname gespeichert werden.
- In der Methode info() verwenden wir die Methode fullname() aus der Unterklasse:
$this->fullname()
- Wir erzeugen ein Objekt der Klasse Address:
$addressHuber = new Address('Hans', 'Huber', '0172-11339922', 'Dr.');
- Da
Address
eine Unterklasse ("Ableitung") vonName
ist, können wir auch eine Methode ausName
verwenden:$addressHuber->fullname()