Auf Thema antworten

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 ?



Oben