Erben von Methoden mit override-äquivalenten Signaturen

8

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?

    
Show Stopper 26.09.2017, 06:15
quelle

1 Antwort

5
  

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.

    
Luciano van der Veekens 26.09.2017 06:19
quelle

Tags und Links