154 votes

Private vs Protégé - Bonne pratique de visibilité

J'ai cherché et je connais la différence théorique.

  • public - N'importe quelle classe/fonction peut accéder à la méthode/propriété.
  • protected - Seule cette classe et ses sous-classes peuvent accéder à la méthode/propriété.
  • private - Seule cette classe peut accéder à la méthode/propriété. Elle ne sera même pas héritée.

Tout cela va bien, mais la question est, quelle est la différence pratique entre eux ? Quand utiliseriez-vous private et quand utiliseriez-vous protected ? Existe-t-il une pratique standard ou acceptable à ce sujet ?

Jusqu'à présent, pour conserver le concept d'héritage et de polymorphisme, j'utilise public pour tout ce qui doit être accessible depuis l'extérieur (comme les constructeurs et la fonctionnalité principale de la classe), et protected pour les méthodes internes (logique, méthodes d'aide, etc.). Suis-je sur la bonne voie ?

(Notez que cette question est pour moi, mais aussi pour référence future car je n'ai pas vu de question comme celle-ci sur Stack Overflow).

34 votes

Est-ce que cela importe? Toute langue avec un support OOP a cette préoccupation. Je programme en PHP, mais je pense que la question s'applique à n'importe quelle langue supportant l'OOP.

2 votes

D'accord, juste pour savoir si vous aviez oublié de taguer. Maintenant je vois la balise oop.

0 votes

Je dois définir la visibilité (privée/publique/protégée) pour chaque propriété de la classe? Ou seulement certaines ont besoin d'avoir un type de visibilité? Si oui, comment décider quelle propriété doit avoir une visibilité définie en haut de la classe?

1voto

ujwal dhakal Points 394

Eh bien, tout est question d'encapsulation. Si les classes de paybill gèrent la facturation des paiements, pourquoi la classe de produit aurait-elle besoin de tout le processus de facturation, c'est-à-dire la méthode de paiement, comment payer, où payer... Donc seulement laisser ce qui est utilisé pour d'autres classes et objets, rien de plus que public pour ceux où d'autres classes l'utiliseraient aussi, protégé pour ceux limités uniquement aux classes étendues. Comme tu es Madara Uchiha, le privé est comme "limboo", tu peux le voir (ta classe uniquement une seule classe).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X