<div dir="ltr">Hey folks,<div><br></div><div>I found a somewhat puzzling behavior: default interface methods aren't considered abstract method implementations. Trying to compile this minimal reproducer:<div><br></div><div>------ C.java ------</div><div>abstract class A {<br>  abstract void m();<br>}<br><br>interface F {<br>  default void m() {}<br>}<br><br>class C extends A implements F {}<br></div><div>------ C.java ------<br></div><div><br></div><div>$ javac C.java</div><div>C.java:9: error: C is not abstract and does not override abstract method m() in A<br>class C extends A implements F {<br>^<br>1 error<br></div><div><br></div></div><div>I can accept this being valid according to JLS today (I tried with 11, 21, and 23.) I admit this is one of rare occasions when I didn't go scouring the JLS to figure out what exactly prevents the compiler from accepting F.m() as implementation of A.m() in C. I'm wondering though if this isn't something that could be improved upon in the future. (I'm sure there's a gotcha somewhere. Right, Brian? ;-) )</div><div><br></div><div>Have a great day,</div><div>  Attila.</div></div>