156 votes

Protégé dans les interfaces

Pourquoi toutes les méthodes dans un interface définition implicite public ? Pourquoi ne permet-il pas une méthode protected ?

78voto

Raveline Points 1768

Parce qu'une interface est censée signifier "ce que vous pouvez voir de l'extérieur de la classe". Il ne serait pas logique d'ajouter des méthodes non publiques.

74voto

Stephen C Points 255558

Bien que l'on cite souvent raison en est que "définir les interfaces Api publiques", je pense que c'est une simplification.

  • Une étude de l'interface peut être protégé ou privé, et si c'est le cas, il n'est pas de définir une interface publique.

  • Il ne serait pas dénué de sens d'avoir des interfaces qui ont un mélange de modificateurs d'accès; par exemple, en partie publique et partie limité à d'autres classes du même package que l'interface. En fait, dans certains cas, cela pourrait être vers le bas-droit de l'utile, de l'OMI.

Effectivement, je pense que la partie du raisonnement pour que les membres d'une interface implicitement public est qu' il rend Java plus simple:

  • Implicitement interface publique les membres sont plus simples pour les programmeurs à traiter. Combien de fois avez-vous vu le code où les modificateurs d'accès ont été choisis apparemment au hasard?

  • Implicitement interface publique membres à simplifier le langage de spécification ... et donc la tâche du compilateur Java écrivains, et les gens qui mettent en œuvre la Réflexion Api.

Cette ligne de pensée, fait de la "définir les interfaces Api publiques," une conséquence (ou caractéristique) de la langue de conception ... et non l'inverse. En réalité, les deux lignes de pensée probablement développé en parallèle dans l'esprit de la Java des designers.

12voto

Sean Patrick Floyd Points 109428

Parce que les interfaces définissent des API publiques. Tout ce qui est protégé est un détail interne qui n'appartient pas à une interface.

Vous pouvez utiliser des classes abstraites avec des méthodes abstraites protégées, mais les interfaces sont limitées aux méthodes publiques et aux champs finaux statiques publics.

7voto

Ingo Points 21438

Peut-être, parce que c'est une interface , c'est-à-dire qu'il est là pour dire aux clients ce qu'ils peuvent faire avec les instances, plutôt que de leur dire ce qu'ils ne peuvent pas faire.

5voto

Jan_V Points 1285

Une interface est destiné à être utilisé comme un "contrat" pour le monde extérieur. Si vous souhaitez utiliser les méthodes protected vous êtes probablement mieux d'utiliser une classe abstraite (si possible en Java de cours). Wiki

Aussi, ce post a probablement quelques grandes réponses: Pourquoi ne puis-je pas avoir protégé les membres interface?

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