Java Language Classe, classe abstraite et préséance de la méthode d'interface


Exemple

Les implémentations dans les classes, y compris les déclarations abstraites, ont priorité sur toutes les valeurs par défaut de l'interface.

public interface Swim {
    default void backStroke() {
        System.out.println("Swim.backStroke");
    }
}

public abstract class AbstractSwimmer implements Swim {
    public void backStroke() {
        System.out.println("AbstractSwimmer.backStroke");
    }
}

public class FooSwimmer extends AbstractSwimmer {
}

La déclaration suivante

new FooSwimmer().backStroke();

Produira

AbstractSwimmer.backStroke

public interface Swim {
    default void backStroke() {
        System.out.println("Swim.backStroke");
    }
}

public abstract class AbstractSwimmer implements Swim {
}

public class FooSwimmer extends AbstractSwimmer {
    public void backStroke() {
        System.out.println("FooSwimmer.backStroke");
    }
}

La déclaration suivante

new FooSwimmer().backStroke();

Produira

FooSwimmer.backStroke