Qu'est ce qu'une interface en Java?
Juste comme un contrepoint à cette question: qu'est ce qu'une interface en Java?
- Sommes-nous à droit de vote de votre réponse à votre question, que vous avez posté immédiatement ?
- Votebait, à mon humble avis.
- Flagrant votebait, oui. Pourquoi est-ce un problème? C'est la question légitime? Il ajoute à la connaissance stockés dans des? Ceux-ci semblent comme plus pertinente préoccupations que mes points de réputation.
- Je pense que cela devrait au moins être de la communauté-wiki.
- j'ai eu le même idear après la lecture de "Ce qui est une classe abstraite Java". Mais tout cela est plus facile pour google, qu'à rechercher dans la.
- Je dois avouer que c'était assez difficile de copier et de coller le lien de Wikipedia 🙂
- Pour l'anecdote, c'est pas que je me soucie grandement sur mon score de réputation, c'est juste qu'il semble hypocrite de me critiquer pour votebaiting ici. N'est pas du tout le point de réputation pour encourager les gens à écrire de bons postes, ce qui rend chaque bon de poster ici un votebait? Il semble idiot. De toute façon, la communauté wikified comme le suggère.
Vous devez vous connecter pour publier un commentaire.
Une interface est une forme particulière d'une classe abstraite qui ne met pas en œuvre toutes les méthodes. En Java, vous créez une interface comme ceci:
Depuis l'interface ne peut pas mettre en œuvre toutes les méthodes, il est implicite que la chose entière, y compris toutes les méthodes, sont à la fois public et abstraite (abstract en Java termes signifie "pas mis en œuvre par cette classe"). Donc, l'interface ci-dessus est identique à l'interface ci-dessous:
Pour utiliser cette interface, il vous suffit d'implémenter l'interface. De nombreuses classes peuvent implémenter une interface et une classe peut implémenter plusieurs interfaces:
Maintenant, si vous vouliez vous pourriez écrire une méthode comme ceci:
Cependant, vous pourriez jamais procédez de la manière suivante:
La raison pour laquelle vous ne pouvez pas faire cela, c'est que
y
est de typeinterfaceA
, et il n'y a pas deinterfaceMethodB()
dansinterfaceA
. De même,z
est de typeinterfaceB
et il n'y a pas deinterfaceMethodA()
dansinterfaceB
.Je l'ai mentionné plus tôt que les interfaces sont juste une forme particulière d'une classe abstraite. Pour illustrer ce point, regardez le code suivant.
Vous hériter de ces classes presque exactement de la même manière:
En fait, vous pouvez même changer l'interface et la classe abstraite comme ceci:
Cependant, il existe deux différences entre les interfaces et les classes abstraites.
La première différence est que les interfaces ne peuvent pas mettre en œuvre des méthodes.
L'interface ci-dessus génère une erreur de compilation, car il a une implémentation pour
implementedMethod()
. Si vous vouliez mettre en œuvre la méthode, mais ne pas être en mesure d'instancier la classe, vous auriez à le faire comme ceci:Ce n'est pas beaucoup d'une classe abstraite car aucun de ses membres sont abstraites, mais il est légal de Java.
L'autre différence entre les interfaces et les classes abstraites est qu'une classe peut hériter de plusieurs interfaces, mais ne peut hériter d'une classe abstraite.
Le code ci-dessus génère une erreur de compilation, pas parce que les classes sont toutes vides, mais parce que
InheritsFromTwoAbstractClasses
est d'essayer d'hériter de deux classes abstraites, ce qui est illégal. La suite est parfaitement légal.La première différence entre les interfaces et les classes abstraites est la raison pour la deuxième différence. Regardez le code suivant.
Il n'y a pas de problème avec le code ci-dessus, car
InterfaceA
etInterfaceB
n'ont rien à cacher. Il est facile de dire qu'un appel àmethod
imprimé "méthode()".Maintenant, regardez le code suivant:
C'est exactement la même que celle de notre exemple précédent, sauf que parce que nous sommes autorisés à mettre en œuvre des méthodes dans les classes abstraites, nous l'avons fait, et parce que nous n'avons pas à mettre en œuvre, déjà mis en œuvre des méthodes dans une classe qui hérite, nous n'avons pas. Mais vous avez peut-être remarqué, il y a un problème. Ce qui se passe lorsque nous appelons
new InheritsFromTwoAbstractClasses().method()
? Est-il print "Bonjour" ou "au Revoir"? Vous ne le savez probablement pas, et ni ne le compilateur Java. Une autre langue, C++ ont permis ce genre d'héritage et ils ont résolu ces problèmes par des moyens qui étaient souvent très compliqué. Pour éviter ce genre d'ennuis, Java a décidé de faire de cet "héritage multiple" illégale.L'inconvénient de Java est la solution que le suivant ne peut pas être fait:
AbstractClassA
etAbstractClassB
sont "mixin" ou les classes qui ne sont pas destinés à être instancié mais d'ajouter des fonctionnalités pour les classes qu'ils sont "mélangés dans les" par héritage. Il n'y a évidemment aucun problème à comprendre ce qui se passe si vous appeleznew InheritsFromTwoAbstractClasses().hi()
ounew InheritsFromTwoAbstractClasses().bye()
, mais vous ne pouvez pas le faire parce que Java ne le permet pas.(Je sais que c'est un long post, donc si il y a des erreurs dans s'il vous plaît laissez-moi savoir et je vais les corriger.)
Interface est un contrat. Un simple exemple est un Locataire et Propriétaire qui sont les deux parties et la contrat est le Contrat de Location. Contrat de location contient divers clause de Locataires à les suivre. De même, l'Interface est un contact qui contient plusieurs méthode (Déclaration) dont la Partie est à mettre en œuvre (fournir le corps de méthode).Ici partie est la classe qui implémentent l'interface et la deuxième partie est Client et la façon de les utiliser et l'interface est d'avoir “Référence de l'Interface” et “Objet de la mise en Œuvre de la classe”: ci-dessous sont 3 composantes:(Expliqué avec l'aide de l'exemple)
Composante 1] De L'Interface : Le Contrat
Le volet 2] la mise en Œuvre de la Classe : Partie du numéro de 1
Composante 3] code de Client : numéro 2
Une interface en java est un projet de classe. Il a des constantes statiques et méthodes abstraites seulement.L'interface en java est un mécanisme destiné à réaliser pleinement l'abstraction. Il peut y avoir que des méthodes abstraites dans l'interface java pas de corps de méthode. Il est utilisé pour réaliser pleinement l'abstraction et l'héritage multiple en Java. Une interface est un ensemble de méthodes abstraites. Une classe implémente une interface, héritant ainsi les méthodes abstraites de l'interface.
Une interface n'est pas une classe. L'écriture d'une interface est similaire à l'écriture d'une classe, mais ils sont deux concepts différents. Une classe décrit les attributs et les comportements d'un objet. Une interface contient des comportements(Méthodes Abstraites) qu'une classe implémente.
À moins que la classe qui implémente l'interface est abstraite, toutes les méthodes de l'interface doivent être définies dans la classe.Depuis l'héritage multiple n'est pas autorisé en java, donc l'interface est la seule façon de mettre en œuvre l'héritage multiple.
Voici un exemple pour la compréhension de l'interface
Interface est le modèle d'une classe.
Il est l'un de la programmation orientée objet concept appelé abstraction de Données sous qu'il y a deux catégories, l'une est classe abstraite et un autre interface.
Classe abstraite réalise seulement partielle de l'abstraction mais l'interface réalise pleinement l'abstraction.
Dans l'interface, il n'est abstrait des méthodes et des variables final..vous pouvez s'étend à un nombre quelconque de l'interface et vous pouvez implémenter un certain nombre de classes.
Si toute la classe est la mise en œuvre de l'interface, puis la classe doit implémenter les méthodes abstraites trop
Interface ne peut pas être instanciée.
Cette question est de 6 ans et beaucoup de choses ont changé la définition de l'interface au cours des années.
À partir d'oracle la documentation page ( post Java 8 release) :
Regarder liées SE questions pour mieux expliquer:
Est-il plus une interface que d'avoir les bonnes méthodes
Quelle est la différence entre une interface et une classe abstraite?
Ce que c'est
Un interface est un type de référence, tout comme un classe est. Ce sont les deux principaux types de référence en Java.
Ce qu'il contient
Un interface peut contenir un sous-ensemble de ce qu'une normale classe peut contenir. Cela inclut tout ce qui est
static
, les deux méthodes et variables, et nonstatic
des déclarations de méthode. Il n'est pas permis nonstatic
variables.Une déclaration d'une méthode diffère de la méthode habituelle en plusieurs choses; ici est un exemple:
Ces déclarations peuvent être marquées comme
public
etabstract
, comme représenté avec[optional braces]
. Il n'est pas nécessaire de le faire, comme il l'est par défaut.private
,protected
,package-private
(aka. rien) et lefinal
modificateur ne sont pas autorisés et marqué comme une erreur du compilateur. Ils ne l'ont pas mise en œuvre, il y a donc un point-virgule au lieu d'accolades.De Java 8, ils peut tenir non-
static
méthodes avec de mise en œuvre, ceux-ci doivent être marqués avec ledefault
modificateur. Cependant, les mêmes restrictions que pour les autres modificateurs s'appliquent (en ajoutant questrictfp
est maintenant valide etabstract
est pas plus).Ce que c'est utile pour
Une de ses utilisations est pour qu'il soit utilisé comme un visage pour un service. Lorsque les deux parties à travailler ensemble pour former un service demandeur & prestataire de service de type de relation, le fournisseur de services fournit le visage du service (comme à ce que le service ressemble) sous la forme d'une interface.
L'un des concept de la programmation orientée objet est "l'Abstraction", ce qui signifie pour se cacher de travail complexes des systèmes et de montrer que ce qui est nécessaire pour comprendre le système. Cela permet de visualiser le fonctionnement d'un système complexe.
Ceci peut être réalisé par interface où dans chaque module est visualisé (et aussi mis en place) à travailler par le biais de l'interface d'un autre module
Une interface est une classe de construction qui ne contient que des constantes et méthodes abstraites (Introduction à la programmation java, n.d.). En outre, elle peut s'étendre à plus d'une interface par exemple un super-classe. Java permet seulement d'héritage unique pour l'extension de classe, mais permet à de multiples extensions pour
interfaces(Introduction à la programmation Java, n.d.) Par exemple,
Deuxièmement, les interfaces peuvent être utilisées pour spécifier le comportement des objets d'une classe. Toutefois, ils ne peuvent pas contenir des méthodes abstraites. Aussi, une interface peut hériter d'autres interfaces à l'aide du mot-clé extends.
Référence
Introduction à la Programmation Java. Les Interfaces et les classes Abstraites (n.d). Extrait le 10 Mars 2017 de https://viewer.gcu.edu/7NNUKW
code
à l'aide de`
et blocs```
En général, on préfère les interfaces lorsqu'il y a deux sont plus implémentations que nous avons. Où l'Interface est agit comme protocole.
De codage de l'interface, pas implémentations de Codage de l'interface rend vaguement couple.
Une interface est un type de référence en Java. Il est similaire à la classe. C'est une collection de méthodes abstraites. Une classe implémente une interface, héritant ainsi les méthodes abstraites de l'interface. Avec des méthodes abstraites, une interface peut également contenir des constantes, des méthodes par défaut, les méthodes statiques et les types imbriqués. pour plus d' détails
À partir de la dernière définition par Oracle, l'Interface est:
Utilisation la plus populaire des interfaces est que les Api (Application Programming Interface) qui sont communs dans les logiciels commerciaux de produits. Généralement, une entreprise vend un logiciel qui contient des méthodes complexes qu'une autre compagnie veut les utiliser dans son propre logiciel.
Un exemple pourrait être un paquet de l'image numérique de méthodes de traitement qui sont vendus à des entreprises de fabrication de l'utilisateur final des programmes graphiques.
Le traitement de l'image de la société, écrit-ses classes à implémenter une interface, qui elle rend public à ses clients. Le graphique de la société invoque ensuite les méthodes de traitement d'images en utilisant les signatures et les types de retour définies dans l'interface. Alors que le traitement de l'image de la société API est rendu public (à ses clients, mise en œuvre de l'API est gardé comme un secret bien gardé—en fait, il peut réviser la mise en œuvre à une date ultérieure, tant qu'il continue de mettre en œuvre l'interface d'origine que ses clients ont invoqué.
Découvrez à en savoir plus sur les interfaces.