> What about this?
>
> interface A {
> void foo();
> final int fun() { return 1; }
> }
>
> interface B {
> void bar();
> final int fun() { return 2; }
> }
>
> class C : B, A {
> }
>
> (new C).fun();
>
> What does that do?
Simple: overriding final methods is illegal.