In Java passiert etwas Merkwürdiges, wenn Sie eine abstrakte Klasse zum Implementieren einer Schnittstelle verwenden: Einige der Methoden der Schnittstelle können vollständig fehlen (dh es ist weder eine abstrakte Deklaration noch eine tatsächliche Implementierung vorhanden), aber der Compiler beschwert sich nicht.
Zum Beispiel angesichts der Schnittstelle:
public interface IAnything {
void m1();
void m2();
void m3();
}
Die folgende abstrakte Klasse wird ohne Warnung oder Fehler fröhlich kompiliert:
public abstract class AbstractThing implements IAnything {
public void m1() {}
public void m3() {}
}
Kannst du erklären warum?
:w
der Dateien.