implementazione di un'interfaccia estesa su una classe concreta

2

Non so se questa è una best practice o no. Se ho un'interfaccia che estende un'altra interfaccia come:

public interface A extends B{
    public void something();
};

e una classe concreta che implementa A come:

public class MyClass implements A {
    @Override 
    public void something(){
        System.out.println("ZOINKS");
    }

    @Override
    public void somethingFromB(){
        System.out.println("Hey, Scoobs!");
    }
};

Devo aggiungere B alla classe concreta per identificare l'altra interfaccia?

    
posta Shane Andrie 17.11.2015 - 03:40
fonte

1 risposta

3

A extends B significa "A is a B". Implementando A, MyClass dice "Sono un A, e quindi sono B".

Quindi, data la semantica di Java, è perfettamente giusto implementare (direttamente) solo l'interfaccia specializzata. È chiaro ed evita ridondanza.

L'unico caso in cui una ridefinizione potrebbe essere interessante è quando si utilizza un'interfaccia come marker (che probabilmente non è una buona idea). È più semplice ottenere direttamente le interfacce implementate da una classe piuttosto che da tutte le interfacce, incluse quelle ereditate ed estese.

Personalmente, non ho mai "ridichiarato" un'implementazione.

    
risposta data 17.11.2015 - 09:14
fonte

Leggi altre domande sui tag