Question

Je l'interface suivante en Java

public interface IFoo
{
    public abstract void foo();
    public void bar();
}

Quelle est la différence entre foo () et bar ()? Quand dois-je utiliser abstraite?

Les deux semblent accomplir ce que je veux, à moins que je manque quelque chose de subtil?

Mise à jour en double de Pourquoi voudrait-on déclarer une méthode d'interface Java abstraite?

Était-ce utile?

La solution

Il n'y a aucune différence fonctionnelle. Aucune mise en œuvre est toujours fourni dans une interface java si toutes les déclarations de méthode sont implicitement abstraite.

Voir [1]: http: //java.sun .com / docs / livres / tutorial / java / Iandi / abstract.html

Une citation directe forme ci-dessus:

  

Note: Toutes les méthodes dans une interface (voir la section Interfaces) sont implicitement abstrait, de sorte que le modificateur abstrait n'est pas utilisé avec des méthodes d'interface (il pourrait être-il est tout simplement pas nécessaire)

.

Autres conseils

méthodes d'interface sont à la fois public et abstract par défaut. Il n'y a pas de différence entre foo() et bar() et vous pouvez supprimer en toute sécurité tous les mots-clés public et abstract.

Vous n'êtes pas quelque chose qui manque. De Java Language Specification :

  

Chaque déclaration de méthode dans le corps   d'une interface est implicitement   abstraite, de sorte que son corps est toujours   représenté par un point-virgule, pas un   bloc.

     

Chaque déclaration de méthode dans le corps   d'une interface est implicitement public.

En d'autres termes, vous pouvez omettre le public ainsi que la abstract sur les méthodes d'interface.

Il est redondant (il n'y a pas de différence entre les deux déclarations) et fortement déconseillée dans les section 9.4 de la spécification du langage Java:

  

Pour la compatibilité avec les anciennes versions   de la plate-forme Java, il est permis   mais découragé, comme une question de style,   de préciser l'abstrait de manière redondante   modification pour des méthodes déclarées dans   interfaces.

Et public est tout aussi inutile et découragé:

  

Il est permis, mais fortement déconseillé en matière de style, de préciser la manière redondante   modificateur public méthodes d'interface.

Je ne sais pas pourquoi public est fortement découragée mais abstract est tout simplement découragée ...

Les deux faire la même, puisque toutes les méthodes d'une interface sont abstraites.

abstract dans ce scénario est inutile (ce qui est des procédés de marquage en tant interfaces public).

Vous au lieu utiliser sur une méthode dans une classe abstraite afin de faire respecter son primordial par une sous-classe.

Il ne sont différence entre les déclarations. Conceptuellement, toutes les méthodes dans une interface sont abstraites.

Il ne fait aucune différence. Toutes les méthodes dans une interface Java sont toujours abstraites.

Voir la première note à ce lien: http://java.sun.com/docs/books/ tutorial / java / Iandi / abstract.html

foo () et bar () sont abstraites comme ils sont déclarés dans une interface. Le mot abstrait que vous avez utilisé ici est sans importance -. Vous feriez mieux de le supprimer

Interfaces en java sont égaux « en quelque sorte » à un cours entièrement abstraites, afin d'ajouter le mot-clé « abstrait » à une déclaration de méthode dans une interface n'a rien à voir avec la méthode!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top