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 :

un public ou protected peut remplacer un private (polymorphisme) [POO]


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 378
    Points : 5 731
    Points
    5 731
    Billets dans le blog
    1
    Par défaut un public ou protected peut remplacer un private (polymorphisme)
    Bonjour,
    toujours dans la lecture du bouquin de Bersini sur la POO, je ne comprends pas la phrase du titre. Contexte : on est dans le cas d'une méthode de la super-classe, qui est redéfinie dans une sous-classe.
    D'après moi, si une méthode est private dans la super-classe, elle n'est pas accessible par les sous-classes qui héritent de la super-classe donc ce qui est mentionné dans la phrase est impossible. J'ai raison ? (ou peut-être le vrai contexte m'a échappé...)
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut Laurent,

    Citation Envoyé par laurentSc Voir le message
    si une méthode est private dans la super-classe, elle n'est pas accessible par les sous-classes qui héritent de la super-classe
    C'est exact.

    Je ne comprends pas le reste de ta prose, désolé

  3. #3
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Bonjour,
    Citation Envoyé par laurentSc Voir le message
    si une méthode est private dans la super-classe, elle n'est pas accessible par les sous-classes qui héritent de la super-classe
    Oui, et elle ne peut pas y être redéfinie.

    Cependant, la phrase "un public ou protected peut remplacer un private" ne parle pas précisément de redéfinition.

    En fait, on peut avoir dans la classe un élément privé et dans la sous-classe un élément ayant le même nom.
    C'est autorisé et ce n'est pas considéré comme une tentative de redéfinition.
    L'élément de même nom de la sous-classe n'a, dans ce cas, pas de rapport avec celui de la classe mère.

    Par exemple, on peut avoir dans une classe : private function f, et dans la sous-classe : public function f (mais pas l'inverse).

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 378
    Points : 5 731
    Points
    5 731
    Billets dans le blog
    1
    Par défaut
    Merci pour l'explication.
    Du coup, même si c'est autorisé d'avoir une méthode qui porte le même nom private function fff() dans la super-classe et public function fff() dans la sous-classe qui hérite de la super-classe, je suppose que c'est fortement déconseillé car prête à la confusion ; non ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  5. #5
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    ce n'est pas fortement déconseillé, c'est juste étrange d'avoir interdit publiquement l'accès à la fonction dans la classe mère pour l'autoriser dans les classes filles : à moins que le code sous-jacent ne fasse pas le même traitement (entre les classes mère et fille) mais que la fonction porte le même nom (une forme d'homonymie)

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

Discussions similaires

  1. qu'est-ce qui peut remplacer le locate
    Par chekkal dans le forum Langage
    Réponses: 1
    Dernier message: 26/01/2014, 11h39
  2. [POO] Public ou Protected
    Par royalwear dans le forum Langage
    Réponses: 13
    Dernier message: 27/10/2011, 11h03
  3. Mysql peut remplacer xml?
    Par n_adou dans le forum XQUERY/SGBD
    Réponses: 5
    Dernier message: 01/05/2008, 21h31
  4. Réponses: 1
    Dernier message: 09/01/2007, 14h33
  5. Protected / Public / Private....
    Par GOUGOU1 dans le forum C++
    Réponses: 16
    Dernier message: 17/03/2005, 22h04

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