2016-01-24 22 views
6

Vedo il suo scritto in più Places-Tutti i metodi di interfaccia sono astratti?

"All of the methods in an interface are abstract." 

Ma un'interfaccia può anche contenere default methods e static methods e il metodo corpi esiste per metodi predefiniti e metodi statici.

quindi tutti i metodi di interfaccia sono astratti?

+4

Android non sta utilizzando Java 8 ** ancora **, quindi non ci sono metodi predefiniti per il momento; tutto astratto –

risposta

6

Questo è corretto

Tutti i suoi metodi sono astratto, indipendentemente da suoi modificatori di accesso.

Una spiegazione perfetta per @coder:

Un'interfaccia è come una classe "puramente" astratto. La classe e all dei suoi metodi sono astratti. Una classe astratta può aver implementato i metodi ma la classe stessa non può essere istanziata (utile per l'ereditarietà e dopo DRY).

Per un'interfaccia, poiché non esiste alcuna implementazione, sono utili allo scopo: un contratto. Se si implementa l'interfaccia , è necessario implementare i metodi nell'interfaccia.

Quindi la differenza è che una classe astratta può aver implementato i metodi mentre un'interfaccia non può.

La ragione per cui sono separati è quindi una classe in grado di implementare più interfacce . Java e C# limitano una classe ad inerente da una singola classe genitore . Alcune lingue consentono di ereditare da più classi e si può eseguire il lavoro di un'interfaccia tramite una classe "puramente" astratta . Ma l'ereditarietà multipla ha i suoi problemi, ovvero il temuto diamante Problema

Dai un'occhiata alla documentazione Oracoli su Abstract methods and classes.

6

Da Java 8, un'interfaccia può anche contenere metodi predefiniti e metodi statici con i metodi astratti. I corpi dei metodi esistono per i metodi predefiniti e statici.

Uno dei più grandi cambiamenti di progettazione in Java 8 è con il concetto di interfacce . Prima di Java 7, potevamo avere solo dichiarazioni di metodo in le interfacce. Ma da Java 8, possiamo avere metodi predefiniti e metodi statici nelle interfacce.

interfaccia Predefinito Metodo

Per la creazione di un metodo predefinito nell'interfaccia, abbiamo bisogno di usare parola chiave “default” con la firma del metodo.

interfaccia metodi statici

I metodi statici sono simili ai metodi, tranne che non possiamo ignorare loro nelle classi di implementazione di default. Questa funzione ci aiuta in evitando risultati indesiderati in caso di scarsa implementazione nelle classi minori.

Per ulteriori controllare this

0

Tutti i metodi di un'interfaccia sono astratti. Questa affermazione è vera. È obbligatorio che un'interfaccia abbia metodi astratti solo per applicare ereditarietà multipla.

-1

TUTTO il metodo nell'interfaccia sono astratta e per impostazione predefinita i campi nella JAVA sono statici, pubblico e finale e tutti i membri sono pubblico

e non possiamo rendere i membri dell'interfaccia privati ​​ e protetti .

0

Questo è falso come da Jeanne Boyarsky & il libro di Scott Selikoff, OCA: Oracle® Certified Associate Java SE 8 Guida allo studio del programmatore I Esame 1Z0-808.

. . . perché prima di Java 8 si presumeva che tutti i metodi di interfaccia fossero astratti. Poiché Java 8 ora include i metodi predefiniti e statici e non sono mai astratti, non è possibile assumere che il modificatore astratto verrà applicato implicitamente a tutti i metodi dal compilatore. (pagina 346 del libro)

0

Tutti i metodi nelle interfacce java sono astratti, solo se sono esplicitamente dichiarati statici o di default non sono astratti.