46 votes

Pourquoi ne pouvons-nous pas modifier le modificateur d'accès tout en remplaçant les méthodes en C# ?

En C#, nous ne pouvons pas modifier le modificateur d'accès tout en remplaçant une méthode de la classe de base. par exemple

 Class Base
{
   **protected** string foo()
   {
       return "Base";
   }
}

Class Derived : Base
{
   **public** override string foo()
   {
       return "Derived";
   }
}

Ce n'est pas valide en C#, cela donnera une erreur de temps de compilation.

Je veux savoir la raison, pourquoi ce n'est pas autorisé. Y a-t-il un problème technique ou cela peut-il conduire à quelque chose qui n'est pas cohérent en termes de restriction d'accès ???

3voto

Si vous modifiez les modificateurs de visibilité d'un modificateur plus restrictif à un modificateur moins restrictif, vous autorisez les clients de classe à accéder aux méthodes conçues pour un usage interne. Essentiellement, vous avez fourni un moyen de modifier l'état de la classe qui peut ne pas être sûr.

1voto

Kon Points 16125

Vous pouvez rendre l'accès de la classe dérivée inférieur à celui de la base, mais pas plus. Sinon, cela contredirait la définition de la base et exposerait ses composants au-delà de ce qui était prévu.

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