Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1675 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Visibilité d'une méthode après un héritage

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Visibilité d'une méthode après un héritage

n°1741374
*syl*
--> []
Posté le 04-06-2008 à 14:37:24  profilanswer
 

Salut !
 

Code :
  1. class A{
  2.    protected function f(){
  3.  
  4.    }
  5. }
  6.  
  7. class B extends A{
  8.    public function f(){
  9.  
  10.    }
  11. }


 
Y'a quelqu'un pour m'expliquer pourquoi on peut augmenter (mettre en public) la visibilité de f() alors que dans mon esprit c'était le contraire ? [:wam]  
Si je veux mettre B::f() en privé ça me jette : « Fatal error: Access level to B::f() must be protected (as in class A) or weaker in /home/xxx/hfr.php on line 13 ».
 
(PHP 5.2.5-3+lenny1 with Suhosin-Patch 0.9.6.2 (cli))

mood
Publicité
Posté le 04-06-2008 à 14:37:24  profilanswer
 

n°1741390
sielfried
Posté le 04-06-2008 à 14:47:37  profilanswer
 

Bah non c'est comme ça (et ça me paraît logique), dans la classe de base ce que tu définis c'est la visibilité minimum. T'as le droit de l'étendre dans les sous-classes si ça te chante, mais pas de la restreindre.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1741516
CyberDenix
Posté le 04-06-2008 à 18:46:22  profilanswer
 

Ben là en l'occurence il redéfinit f, donc moi ca me parait étrange qu'il ne puisse pas la mettre en private si ca lui chante, non ?
 
En même temps je dis ca, je n'ai jamais eut besoin de faire ce genre de manipulation alors le véritable problème est peut-être à chercher au niveau de la conception...


---------------
Directeur Technique (CTO)
n°1741517
0x90
Posté le 04-06-2008 à 18:54:12  profilanswer
 

Un objet d'une sous-classe B est censé pouvoir remplacer un objet de la classe parent A partout ou un objet de cette classe est attendu. Donc si quelqu'un veut utiliser une fonction publique A::f il ne faut pas qu'un B::f la fasse "disparaitre".
 
Inversement si B fait "apparaitre" une fonction protected de A, cela ne gène en rien les utilisateurs de la classe A, si A a laissé la fonction en protected au lieu de private, il autorise ses sous-classes à en faire ce qu'elles veulent, y compris l'exposer au monde entier.


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Visibilité d'une méthode après un héritage

 

Sujets relatifs
Maple, méthode RSA, type arrayprobléme de methode avec les threads
Héritage dans les collectionsLier une JProgressBar à une méthode à durée indéterminée
Recastage et héritage avec une Listpb avec affichage de methode Post dans une box Moodalbox
Problème accès à une méthode d'un vecteur de classeproblème débutant: appel méthode
Heritage: virtual / static probleme de designquestion sur l'héritage multiple
Plus de sujets relatifs à : Visibilité d'une méthode après un héritage


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)