20-10-2007, 11:07 PM
Oui tout-à-fait
Code PHP :
<?php
class Mere {
public $nom = "Maman";
function a() { echo "a"; }
function b() { echo "b"; }
function affiche_nom() { echo $this->nom; }
}
class Enfant extends Mere { // J'étends Mere, j'ai donc les méthodes a() et b()
function b() { // surcharge d'une méthode de ma classe mère
parent::b(); // j'appelle la version «d'origine» de cette méthode (facultatif)
echo "B"; // et j'ajoute ma sauce à moi
}
function c() { echo "c"; } // Et j'ajoute une fonction rien qu'à moi
}
class PetitEnfant extends Enfant { // J'ai toutes les propriétés de Enfant, mais je ne connais pas ma grand-mère
// ce qui signifie que dans mes méthodes je ne peux pas appeler parent::parent::methode() !
function a() {
parent::a(); // J'appelle la version de ma mère, donc de la classe Enfant, en l'occurrence comme Enfant n'a pas
// surchargé cette méthode, c'est directement la version de Mere que j'appelle
echo "c";
}
}
$o = new PetitEnfant;
$o->nom = "Bébé";
$o->a(); // "ac"
$o->b(); // "bB"
$o->affiche_nom(); // "Bébé"