Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
informatique:programmation:php:poo [2011/10/19 20:19] benoit |
informatique:programmation:php:poo [2018/09/06 19:10] (Version actuelle) |
||
---|---|---|---|
Ligne 449: | Ligne 449: | ||
Restreindre l'héritage d'une classe (classe finale ne pouvant être héritée) et la empêcher réécriture d'une methode. | Restreindre l'héritage d'une classe (classe finale ne pouvant être héritée) et la empêcher réécriture d'une methode. | ||
+ | |||
<sxh php> | <sxh php> | ||
<?php | <?php | ||
Ligne 475: | Ligne 476: | ||
?> | ?> | ||
</sxh> | </sxh> | ||
+ | |||
+ | ==== Résolution statique à la volée ==== | ||
+ | <sxh php> | ||
+ | <?php | ||
+ | class Mere | ||
+ | { | ||
+ | public static function lancerLeTest() | ||
+ | { | ||
+ | self::quiEstCe(); | ||
+ | } | ||
+ | |||
+ | public function quiEstCe() | ||
+ | { | ||
+ | echo "Je suis la classe Mere !\n"; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | class Enfant extends Mere | ||
+ | { | ||
+ | public function quiEstCe() | ||
+ | { | ||
+ | echo 'Je suis la classe Enfant !'; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | Enfant::lancerLeTest(); | ||
+ | ?> | ||
+ | </sxh> | ||
+ | |||
+ | Résultat attendu : | ||
+ | Je suis la classe Mere ! | ||
==== Pour résumer ==== | ==== Pour résumer ==== | ||
* Avec l'attribut **protected** il est possible de permettre au classe fille d'utiliser l'attribut contrairement à l'attribut **private** | * Avec l'attribut **protected** il est possible de permettre au classe fille d'utiliser l'attribut contrairement à l'attribut **private** | ||
* **abstract** dans une classe empèche d'utiliser cette classe en dehors d'une classe fille | * **abstract** dans une classe empèche d'utiliser cette classe en dehors d'une classe fille | ||
- | * **abstract** dans une méthode oblige les classes filles à réécrire la méthode | + | * **abstract** dans une méthode oblige les classes filles à réécrire la méthode. |
* **final** permet de déclarer une méthode ou classe comme non "héritable" | * **final** permet de déclarer une méthode ou classe comme non "héritable" | ||
* **parent::methode()** permet de reprendre les éléments d'une methode parente y ajouter modifier des éléments | * **parent::methode()** permet de reprendre les éléments d'une methode parente y ajouter modifier des éléments |