Précédent Suivant

Programmation orienté objet

Les classes et les objets (PHP 4)
Héritage

Une classe peut être déclarée comme étant une sous-classe d’une autre classe à l’aide du mot clé extends.

Exemple :

<?php
class B extends A {
        
var $attributB;
        
function operationB() {
                
corps de la fonction
        
}
}
?>

 

La classe B est sous-classe de la classe A : elle hérite des attributs et des méthodes de la classe A, par contre la classe A, parent de la classe B ne peut en aucun cas hériter des attributs et des méthodes de B.

 

Exemple :

<?php
   
class parent {
        
var $attribut1;
        
function operation1() {
                 
$this->attribut1;
                
echo "L'attribut de parent est <b>$this->attribut1 </b>(grace a
                      
operation1).<br><br>";
           
}
        
//accesseur de attribut1
        
function get_attribut1() {
                
return $this->attribut1;
        
}

        
function set_attribut1 ($new_attribut) {
                
$this->attribut1 = $new_attribut;
        
}
   
}

   
class fils extends parent {
        
var $attribut2;
        
function operation2()         {
                  
$this->attribut2;
                
echo "L'attribut de fils est <b>$this->attribut2 </b>(grace à
                                                                
l'operation2).<br><br>";
        
}
   
}

   
//Instanciation de la classe fils dans l'Objet b
   
$b = new fils();

   
//Affectation d'une nouvelle valeur grace à l'accesseur
   
$b->set_attribut1(40);
   
//Affichage de la valeur de l'attribut1 grace à l'accesseur
   
echo "L'attribut de parent est <b>".$b->get_attribut1()." </b> (grace à
                                                                
get_attribut1).<br>";
   
//Exécution de la méthode de la classe fils qui est héritée de la classe parent
  
//Affichage de la valeur de l'attribut1 grace à la méthode operation1 de la class parent
   
$b->operation1(); // affiche : L'attribut de parent est 40

   
//Affectation d'une nouvelle valeur sans accesseur
   
$b->attribut2 = 10;
   
//Affichage de la valeur de l'attribut2 sans accesseur
   
echo "L'attribut de parent est <b>".$b->attribut2." </b> ( grace a l'attribut2).<br>";
   
//Exécution de la méthode de la classe fils
   
//Affichage de la valeur de l'attributé grace à la méthode operation2 de la class fils
   
$b->operation2(); // affiche : L'attribut de fils est 10

   
// tous les accès aux attributs et aux opérations sont possibles pour un objet de la
   
//classe fils
   
//Instanciation de la classe parent dans l'Objet a
   
$a = new parent();
   
//Affectation d'une nouvelle valeur grace à l'accesseur
   
$a->set_attribut1(40);
   
//Affichage de la valeur de l'attribut1 grace à l'accesseur
   
echo "L'attribut de parent est <b>".$a->get_attribut1()." </b> ( grace a
                                                                
get_attribut1).<br>";
   
//Exécution de la méthode de la classe parent
  
//Affichage de la valeur de l'attribut1 grace à la méthode operation1 de la class parent
   
$a->operation1(); //

   
//Affectation d'une nouvelle valeur sans accesseur
   
$a->attribut2 = 10;
   
//Affichage de la valeur de l'attribut2 sans accesseur
   
echo "L'attribut de parent est <b>".$a->attribut2." </b>grace a l'attribut2.<br>";

   
//Exécution de la méthode de la classe fils operation2 n'est pas autorisée
   
//Puisque la classe parent n'hérite pas de la classe fils
   
//Affichage de la valeur de l'attributé grace à la méthode operation2 de la class fils
   
//Affiche Fatal error: Call to undefined function: operation2() in
   
//d:\coursphp\exercice\test.php on line 77
   
$a->operation2(); // affiche : L'attribut de fils est 10
?>

 

Précédent Suivant