Das ist in Java so nicht möglich, da es dort keine Mehrfachvererbung gibt.
Ausgenommen ist die Vererbung über mehrere Interfaces. Der Compiler kennt hier aber die konkrete Methode die er aufrufen soll, da ein Interface abstract ist. Das bedeutet eine Klasse Test die 2 verschiedene Interfaces implementiert die unter anderem gleiche Methoden vorschreiben macht genau eine konkrete Methode mit dieser Signatur. Damit ist die Vorschrift für beide Interface erfüllt und trotzdem eindeutig.
[CODE=java]public interface InterfaceA {
public void methodeA();
public void methodeC();
}[/CODE]
[CODE=java]public interface InterfaceB {
public void methodeB();
public void methodeC() ;
}[/CODE]
[CODE=java]public class Test implements InterfaceA, InterfaceB {
@Override
public void methodeA() {
System.out.println("A");
}
@Override
public void methodeB() {
System.out.println("B");
}
@Override
public void methodeC() {
System.out.println("Ich mache das was mir die Klasse Test sagt!");
}
}[/CODE]
Wenn ich mich richtig erinnere wurde das Schlüsselwort "default" bei Java 8 mit den Lambdafunktioen eingeführt. Der Grund war unter anderem, dass die Collection API mit Methoden erweitert wurden die Lambadas als Argumente verstehen.
Um zu verhindern, dass alte Programme angepasst werden müssen wurde default eingeführt.
Damit wurden nicht abstracte Methoden für das Interface zugelassen.
Also ist die default Methode eigentlich eine Ursache für das Diamantproblem.
Oder siehst Du das anders ?