[ https://issues.apache.org/jira/browse/GROOVY-11548?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17910517#comment-17910517 ]
Paul King commented on GROOVY-11548: ------------------------------------ This is kind of by design (well, an implementation detail in Groovy 4). Groovy 5 compiles default interface methods natively. Groovy 4 emulates them with traits. So, your interface (because it has a default method) is converted to: {code:groovy} trait I0 { void func() { } } {code} And the semantics of traits is to override rather than be a default. Groovy 5 lets you pick between traits and default methods in interfaces so you get the best of both worlds depending on your needs. The workaround in Groovy 4 is to write just that one interface in Java. > Could not inherit class and interface where class has a final method > overridden by interface > -------------------------------------------------------------------------------------------- > > Key: GROOVY-11548 > URL: https://issues.apache.org/jira/browse/GROOVY-11548 > Project: Groovy > Issue Type: Bug > Components: Compiler > Affects Versions: 4.0.24 > Environment: Tried on Linux and Windows, the same error. > Reporter: Xiaotian Ma > Priority: Major > Fix For: 5.0.0-alpha-11 > > > Compile following code. > {code:groovy} > class A { > final public void func() { > } > } > interface I0 { > public default void func() { > } > } > class B extends A implements I0 { > }{code} > Groovy 4.0.24: > {code:java} > A.groovy: -1: You are not allowed to override the final method func() from > class 'A'. > @ line -1, column -1. > 1 error{code} > Groovy 5.0.0-alpha-11: passed -- This message was sent by Atlassian Jira (v8.20.10#820010)