Frage

Ich habe die folgende Schnittstelle in Java

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

Was ist der Unterschied zwischen foo () und bar ()? Wann soll ich abstrakt verwenden?

Beide scheinen zu tun, was ich will, wenn ich bin fehlt etwas subtiler?

Aktualisieren Duplizieren von Warum sollte man ein Java Interface-Methode als abstrakt deklarieren?

War es hilfreich?

Lösung

Es gibt keinen funktionalen Unterschied. Keine Implementierung wird immer in einer Java-Schnittstelle, so dass alle Methodendeklarationen vorgesehen sind implizit abstrakt.

[1] Siehe: http: //java.sun .com / docs / Bücher / tutorial / java / iAndi / abstract.html

Ein direktes Zitat bildet die oben:

  

Hinweis: Alle Methoden in einer Schnittstelle (den Schnittstellen Abschnitt) implizit abstrakt ist, so die abstrakte Schlüssel nicht mit Interface-Methoden verwendet wird (es könnte sein-es ist einfach nicht notwendig)

.

Andere Tipps

Interface-Methoden sind sowohl public und abstract standardmäßig. Es gibt keinen Unterschied zwischen foo() und bar() und Sie können alle public und abstract Schlüsselwörter sicher entfernen.

Sie verpassen nichts. Von der Java Language Specification :

  

Jede Methode Erklärung im Körper   der eine Schnittstelle implizit   abstrakt, so ist sein Körper immer   durch ein Semikolon dargestellt, keine   Block.

     

Jede Methode Erklärung im Körper   eine Schnittstelle ist implizit öffentlich.

Mit anderen Worten, können Sie die public sowie die abstract auf den Interface-Methoden verzichtet werden.

Es ist überflüssig (es gibt keinen Unterschied zwischen den beiden Erklärungen) und explizit in Abschnitt 9.4 der Java Language-Spezifikation:

  

Für die Kompatibilität mit älteren Versionen   die Java-Plattform ist es gestattet,   aber entmutigt, als eine Frage des Stils,   zu spezifizieren redundant die abstrakte   Modifikator für Methoden erklärt in   Schnittstellen.

Und public ist ähnlich unnötig und entmutigt:

  

Es ist erlaubt, aber stark als Frage des Stils entmutigt, redundant die angeben   öffentlicher Modifikator für Schnittstellenmethoden.

Ich weiß nicht, warum public ist stark entmutigt aber abstract ist nur entmutigt ...

Beide erreichen die gleiche, da alle Methoden in einer Schnittstelle abstrakt sind.

abstract in diesem Szenario ist nicht erforderlich (wie Methoden in Schnittstellen als public Markierung).

Sie würden statt verwenden Sie diese auf ein Verfahren in einer abstrakten Klasse, um seine überragende durch eine Unterklasse zu erzwingen.

Es gibt keine sind Unterschied zwischen Erklärungen. Konzeptionell alle Methoden in einer Schnittstelle sind abstrakt.

Es macht keinen Unterschied. Alle Methoden in einer Java-Schnittstelle sind immer abstrakt.

Sehen Sie die erste Note unter diesem Link: http://java.sun.com/docs/books/ tutorial / java / iAndi / abstract.html

Sowohl foo () und bar () sind abstrakt, da sie innerhalb einer Schnittstelle deklariert sind. Das abstrakte Wort, das Sie hier verwendet wird, ist nicht von Bedeutung -. Sie es besser entfernen

Schnittstellen in Java sind gleich „irgendwie“ auf eine völlig abstrakten Klassen, so dass das Hinzufügen des „abstrakte“ Schlüsselwort auf eine Methodendeklaration in einer Schnittstelle hat nichts mit dem Verfahren zu tun!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top