Perché un'interfaccia estende un'interfaccia invece di implementarla?

3

In Java supponiamo di avere un'interfaccia A:

public interface A {
    // foo
}

Ho anche l'interfaccia B:

public interface B extends A {
    // foo + bar
}

Perché l'interfaccia B estendi interfaccia A e non implementa l'interfaccia A?

Non avrebbe più senso se B implementato A?

Perché i designer del linguaggio hanno scelto di usare la parola estendere qui? Ci sono sottigliezze che mi mancano?

    
posta sixtyfootersdude 20.04.2015 - 16:29
fonte

3 risposte

18

Un'interfaccia è un contratto. Non implementa nulla (i metodi predefiniti usati correttamente sono una piccola eccezione).

Cosa significherebbe per un'interfaccia "implementare" un altro, comunque? Dovrebbe avere corpi di metodo per alcuni o tutti i metodi sulla superinterfaccia, rendendola una classe.

    
risposta data 20.04.2015 - 16:45
fonte
1

L'implementazione dell'interfaccia implica una finalità che non può essere creata da un'altra interfaccia: per loro natura, un'interfaccia deve essere incompleta.

L'unico motivo per cui estendere un'interfaccia con un'altra interfaccia è se è necessario modificare in modo significativo le impostazioni predefinite nella prima, mantenendo comunque la struttura dell'originale.

Ad esempio, se si dispone di un'interfaccia per il conteggio delle verdure di base, è possibile implementarla per contare un tipo specifico di verdura. Ma se si desidera modificare l'interfaccia in modo che possa distinguere tra diversi tipi di bean, è necessario estenderla prima, quindi implementarla per ciascun tipo di bean. Queste ultime classi implementerebbero sia il contatore di fagioli che il contatore di verdure.

    
risposta data 20.04.2015 - 18:18
fonte
0

Pensa a che estende come amplia l'intervallo di descrizione comportamentale e implementazione come comportamento concreto.

Diciamo che hai un'interfaccia quacking . Questo sarebbe applicabile a rane e anatre. Potresti estendere questa interfaccia generale a swimming e flying che sarebbero quindi applicabili solo all'anatra. Il meccanismo come un anatra o una rana nuota è l'implementazione .

Come @Snowman ha già menzionato: i metodi predefiniti sono un'eccezione a questo concetto.

    
risposta data 20.04.2015 - 18:51
fonte

Leggi altre domande sui tag