2009-04-26 18 views
7

Conosco la differenza tra "interfaccia pubblica" e "interfaccia astratta pubblica", ma quando vengono applicati metodi esistono differenze?utilizzando la parola chiave astratta nell'interfaccia

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

o

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

C'è una ragione per cui nessuna delle risposte è stata accettata? – t0r0X

risposta

4

no, si potrebbe anche scrivere

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

sua la stessa cosa

0

No. Si può applicarsi solo abstract su un metodo su una base astratta classe.

Le interfacce specificano l'insieme di metodi che devono essere implementati in definitiva da un concreto (classe non astratta).

Abstract specificherà un metodo che non è implementato in una classe di base astratta e che deve essere implementato in una sottoclasse concreta.

(Si noti inoltre che la parola è superflua public sulle specifiche di metodo su un'interfaccia)

22

metodi dichiarati nelle interfacce sono per default sia pubblici che astratto.

Eppure, si potrebbe:

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

Tuttavia, l'uso di questi modificatori è scoraggiato. Così è il modificatore astratto applicato alla dichiarazione dell'interfaccia.

In particolare, per quanto riguarda la tua domanda:

"Per la compatibilità con le versioni precedenti della piattaforma Java, è consentito, ma scoraggiato, come una questione di stile, per specificare in modo ridondante il modificatore astratto per i metodi dichiarati nelle interfacce"

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

Sezione 9.4: dichiarazioni metodo astratto.

4

Una nota a margine; I valori definiti in un'interfaccia sono finale statico pubblico il mio valore predefinito in modo

int VALUE = 5;

è uguale

public static int VALUE finale = 5;

in un'interfaccia.

0

Non c'è un'interfaccia pubblica astratta in Java. Tutte le interfacce sono "astratte" dal fatto che non possono essere istanziate. Tutte le funzioni sono automaticamente "astratte" poiché devono essere implementate.