IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Héritage de méthodes: écrasées ou pas ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 35
    Par défaut Héritage de méthodes: écrasées ou pas ?
    Bonjour,

    Je post ici, parce que j'avoue là j'aimerai bien comprendre ce que me fait php, c'est à dire n'importe quoi.

    Imaginons deux classes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    <?php
     
    class pere 
    {
        function a()
        {
    	print 'jappelle papa a()<br>';
    	$this->b();
        }
        function b()
        {
    	print 'jappelle papa b()<br>';
    	$this->c();
        }
        function c()
        {
    	print 'jappelle papa c()<br>';
    	$this->d();
        }
        protected function d()
        {
    	print 'jappelle papa d()<br>';
     
        }
    }
    class fils extends pere
    {
        function a()
        {
    	print 'jappelle fils a()<br>';
    	parent::a();
     
     
        }
        function b()
        {
    	print 'jappelle fils b()<br>';
    	parent::b();
        }
     
        function d()
        {
    	print 'jappelle fils d()<br>';
     
        }
    }
    $toto = new fils();
    $toto->a();
    print '<hr>';
    $toto->c();
    ?>
    Petit test, pour me prouver que si une méthode est appelée si elle est redéfinie dans le fils, c'est la déclaration du fils qui est executée.
    le résultat de ce bout de code est

    jappelle fils a()
    jappelle papa a()
    jappelle fils b()
    jappelle papa b()
    jappelle papa c()
    jappelle fils d()

    jappelle papa c()
    jappelle fils d()

    Alors je ne comprend pas pourquoi dans un code un peu plus complexe, il appelle la déclaration de la classe parente en lieu et place de celle de la classe (au cours d'un appel dans la classe parente, il n'utilise pas sa redéfinition)

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 35
    Par défaut
    A priori, c'est parce que une fonction private était d'abord appelée, donc toutes les autres fonctions appelées restaient dans la définition des parents/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CheckStyle] la méthode n'est pas conçue pour être dérivée
    Par 17mounir dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 19/02/2007, 15h41
  2. Exceptions, héritage et méthodes virtuelles
    Par Nuwanda dans le forum C++
    Réponses: 13
    Dernier message: 23/05/2006, 12h06
  3. [Applet]méthode reconnue...ou pas
    Par Vieux_Lars dans le forum Applets
    Réponses: 8
    Dernier message: 15/02/2006, 06h11
  4. Réponses: 8
    Dernier message: 04/06/2004, 09h13
  5. [Héritage] Redéfinition méthode
    Par petit-ourson dans le forum Langage
    Réponses: 9
    Dernier message: 06/05/2004, 16h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo