2009-04-26 5 views
7

Ich kenne den Unterschied zwischen "öffentliche Schnittstelle" und "öffentliche abstrakte Schnittstelle", aber wenn auf Methoden angewendet gibt es Unterschiede?mit abstrakten Schlüsselwort in der Schnittstelle

public interface IPluggableUi { 
    abstract public JComponent getPanel(); 
    abstract public void initUi(); 
} 

oder

public interface IPluggableUi { 
    public JComponent getPanel(); 
    public void initUi(); 
} 
+1

Gibt es einen Grund, warum keine der Antworten akzeptiert wurde? – t0r0X

Antwort

4

nein, könnte man auch schreiben

public interface IPluggableUi { 
    JComponent getPanel(); 
    void initUi(); 
} 

seine dasselbe

0

Nein, Sie nur abstract auf ein Verfahren zu einer abstrakten Basis anwenden können Klasse.

Schnittstellen geben die Menge der Methoden an, die letztlich von einer konkreten (nicht abstrakten Klasse) implementiert werden müssen.

Abstract gibt eine Methode an, die nicht in einer abstrakten Basisklasse implementiert ist, und dass in einer konkreten Unterklasse implementiert werden muss.

(Beachten Sie auch, dass das public Schlüsselwort auf Verfahren Spezifikationen auf einer Schnittstelle überflüssig ist)

22

Methoden deklariert in Schnittstellen sind standardmäßig sowohl öffentliche als auch abstrakt.

Doch man konnte:

public interface myInterface{ 
    public abstract void myMethod(); 
} 

jedoch die Verwendung dieser Modifikatoren abgeraten. So wird der abstrakte Modifikator auf die Schnittstellenkennung angewendet.

Insbesondere in Bezug auf Ihre Frage:

„Zur Kompatibilität mit älteren Versionen der Java-Plattform, ist es erlaubt, aber entmutigt, als eine Frage des Stils, redundant den abstrakten Modifier für Methoden in Interfaces deklariert angeben“

Quelle: http://java.sun.com/docs/books/jls/second_edition/html/interfaces.doc.html

Abschnitt 9.4: Abstrakte Methode Erklärungen.

4

Eine Randnotiz; Die in einer Schnittstelle definierten Werte sind public static final mein Standard also

int VALUE = 5;

ist die gleiche wie

public static final int value = 5;

in einer Schnittstelle.

0

Es gibt keine öffentliche abstrakte Schnittstelle in Java. Alle Schnittstellen sind "abstrakt", weil sie nicht instanziiert werden können. Alle Funktionen sind automatisch "abstrakt", da sie implementiert werden müssen.

Verwandte Themen