Précédent | Suivant |
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 |