La mise en œuvre de deux des interfaces avec les deux méthodes par défaut de la même signature dans Java 8

Supposons que je dispose de deux interfaces:

public interface I1
{
    default String getGreeting() {
        return "Good Morning!";
    }
}

public interface I2
{
    default String getGreeting() {
        return "Good Afternoon!";
    }
}

Si je veux mettre en œuvre les deux d'entre eux, quelle mise en œuvre seront utilisées?

public class C1 implements I1, I2
{
    public static void main(String[] args)
    {
        System.out.println(new C1().getGreeting());
    }
}
  • Que faire Si I2 s'étend I1 et C1 implémente I2 !!? Je pense que cela va compiler...ou je me trompe ?
  • Merci pour la question! J'ai juste essayé: oui, cela va compiler, quel que soit getGreeting() dans I1 est abstrait ou par défaut. Si la méthode de I1 est par défaut, cela signifie que vous pouvez remplacer la valeur par défaut de mise en œuvre de l'interface-intheritance...
  • Oui exactement...Ça sera la méthode héritée.
  • Voici un article sur les méthodes par Défaut : Java 8 : méthode par Défaut dans l'Interface
InformationsquelleAutor kavai77 | 2014-03-27