Nach jls-9.4.1.3
Wenn eine Schnittstelle eine Standardmethode erbt, deren Signatur override-äquivalent zu einer anderen von I geerbten Methode ist, dann a Kompilierungsfehler tritt auf. (Dies ist der Fall, ob die andere Methode ist abstrakt oder Standard.)
Von der obigen Beschreibung sollte der folgende Code nicht kompiliert werden.
Allerdings, wenn ich diesen Code kompiliere, funktioniert es absolut gut.
%Vor%Warum kompiliert es?
Wenn eine Schnittstelle eine Standardmethode erbt, deren Signatur eine Überschreibung mit einer anderen von I geerbten Methode darstellt, tritt ein Fehler bei der Kompilierung auf. (Dies ist der Fall, wenn die andere Methode abstrakt oder standardmäßig ist.)
Das Zitat bezieht sich auf die folgende Situation:
%Vor%wobei C beide eine Standardmethode und eine andere Methode mit derselben Signatur erbt.
In Ihrer gegebenen Situation überschreibt B#foo
bereits A#foo
und daher erbt C nur eine einzige Methode.
Tags und Links java