Pourquoi toutes les méthodes dans un interface
définition implicite public
? Pourquoi ne permet-il pas une méthode protected
?
Réponses
Trop de publicités?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.
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.
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?