Héritage

simple et strict :

  • Simple : une seule super-classe
  • Strict : toute méthode ré-écrite doit être compatible avec celle de la classe mère (possible d’ajouter des paramètres supplémentaires aux méthodes réécrites, mais ils doivent être facultatifs; possible de supprimer des paramètres obligatoires dans les méthodes réécrites) (sinon warning E_STRICT)‏
  • Mot-clef: extends
<?php

class Date {
	public $jour;
	public $mois;
	public $annee;
}

class DateHeure extends Date {
	public $heure;
	public $minute;
	public $seconde;
}

$uneDateHeure = new DateHeure();

$uneDateHeure->jour = 18;
$uneDateHeure->mois = 4;
$uneDateHeure->annee = 1911;
$uneDateHeure->heure = 18;
$uneDateHeure->minute = 30;
$uneDateHeure->seconde = 10;

echo $uneDateHeure->jour . "/" . $uneDateHeure->mois . "/" . $uneDateHeure->annee . "<br>";
echo $uneDateHeure->heure . "h" . $uneDateHeure->minute . ":" . $uneDateHeure->seconde;

Ré-écriture :

  • D’attributs : si un attribut est ré-écrit dans une classe fille, c’est sa dernière définition qui est utilisée pour déterminer la valeur par défaut dans l’objet de la classe fille

  • De méthodes :
    • respect de l’héritage strict pour éviter les warnings
    • Appel possible de la méthode de la super-classe, par « parent::<nomMethode>() »
<?php

class Vehicule {
	public $nombreRoues;
	function afficher() {
		echo "vehicule : nbre roues " . $this->nombreRoues;
	}
}

class Voiture extends Vehicule {
	public $tailleCoffre;
	function afficher() {
		parent::afficher();
		echo "voiture : taille du coffre " . $this->tailleCoffre . " " . $msg;
	}
}

function affichage(Vehicule $unVehicule) {
$unVehicule->afficher();
}

$maVoiture = new Voiture();
$maVoiture->tailleCoffre=300;
$maVoiture->nombreRoues=4;
affichage($maVoiture);

Table des Matières

Sujet précédent

L’encapsulation

Sujet suivant

Polymorphisme

Cette page