public class Main {
public static class ClassBase {
public void test() {
System.out.println("1");
}
}
public static interface Interface {
default void test() {
System.out.println("2");
}
}
public static class MyClass extends ClassBase implements Interface {
}
public static void main(String[] args) {
new MyClass().test();
}
}
In diesem Beispiel wird es immer drucken 1. 2 zu drucken, ich test
in MyClass
und zurück Interface.super.test()
außer Kraft setzen müssen.Interaktion zwischen erweiterten Klasse und implementierte Schnittstelle
Gibt es eine Möglichkeit, die Methode Interface::test
die Methode ClassBase::test
zu überschreiben, ohne die Methode in MyClass
manuell zu überschreiben? (um im Beispiel 2 zu drucken)
Gibt es einen Weg? Sicher, mach die Schnittstelle zu einer Klasse und die Klasse zu einer Schnittstelle. – shmosel
@shmosel Das Problem ist, dass die Klasse, die ich verwende, von einer API stammt, und ich kann sie nicht ändern. Ich wollte eine Schnittstelle erstellen, um einige Methoden aus dieser Klasse automatisch zu überschreiben (ich werde viel Zeit wiederverwenden, so dass weniger Code benötigt wird), aber es funktioniert nicht. – Franckyi
Sieht so aus, als ob Ihre Klasse nur die Schnittstelle implementieren soll. Wenn das der Fall ist, lassen Sie MyClass nicht ClassBase erweitern – Anil