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

C# Discussion :

Visibilité des interfaces


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Hong-Kong

    Informations forums :
    Inscription : Mai 2003
    Messages : 50
    Par défaut Visibilité des interfaces
    Bonjour,

    Petite question pour les experts. Y a t'il une raison pour qu'on ne puisse pas définir la visibilité (modificateur d'accès) d'une méthode dans un interface ? La responsabilité de la visibilité d'une méthode est donc reléguée au classes implémentants l'interface.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public interface IMyInterface
    {
      bool GetMyInfo(string request);
    }
    Définir la visibilité public, private, protected, ... devant ma méthode GetMyInfo me génère l'erreur suivante : The modifier 'private' is not valid for this item.

    Pourquoi ?

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Salut,

    En fait tu ne peux même pas définir une méthode d'interface autrement que public dans la classe implémentant l'interface.
    ça tient simplement à la définition d'une interface, qui définit un contrat entre ta classe et le monde extérieur que ta classe doit honorer. Autrement dit une méthode d'interface privée n'est plus accessible à l'extérieur de la classe elle même et ne fait donc plus partie de l'interface.
    Quand on y réfléchit encore un peu, pourquoi vouloir forcer une classe à posséder des membres/méthodes protégés ou privés ? Son implémentation ne regarde qu'elle...

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    L'intérêt d'une méthode "private" dans une interface est... nul.

    Une interface sert à définir un "schéma", sans implémentation. Si j'ai un objet qui hérite de l'interface I, alors sans savoir quel est le type de cet objet, ce qu'il représente, la façon dontil est implémenté, je sais qu'il possédera les méthodes, propriétés, événements de l'interface I.
    Le schéma d'une interface est destiné à être lu "de l'extérieur"... Depuis les autres classes, les méthodes privées ou protégées sont de toutes manières invisibles, à quoi servirait-il de les définir dans l'interface ? Donc tous les membres d'une interface sont publics.



    Par contre, je pense qu'il pourrait parfois être utile de définir certains membres d'une interface de manière interne (mot-clé "internal"), et je comprends moins bien pourquoi la syntaxe C# ne le permet pas.
    (une interface interne est possible, par contre...)

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 254
    Par défaut
    Logique

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/02/2013, 20h32
  2. [Débutant] gérer la visibilité des boutons par interface graphique
    Par Adem84 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 10/02/2010, 11h45
  3. Outil pour créer des interfaces graphiques
    Par Cyborg289 dans le forum Interfaces Graphiques en Java
    Réponses: 10
    Dernier message: 11/07/2005, 16h48
  4. [Logiciel]Cherche graphisme pour des interfaces visuelles
    Par smyley dans le forum Autres Logiciels
    Réponses: 9
    Dernier message: 14/11/2004, 02h13
  5. Réponses: 2
    Dernier message: 13/10/2004, 15h32

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